From a6e2e7aa58eeb04b929df71b3b239527da8b19c5 Mon Sep 17 00:00:00 2001 From: nekotoro Date: Wed, 19 Nov 2025 14:48:54 +0100 Subject: [PATCH] first try of drawer event chain currently stuck in NekoDrawerCommand TODO : extract the event from NekoDrawerCommand --- project.xml | 2 +- src/LPTCManager2026.hx | 16 ++++++++- src/command/NekoDrawerCommand.hx | 15 +++++++++ src/components/NekoDrawer.hx | 57 ++++++++++++++++++++++++++++++++ src/components/NekoIconButton.hx | 24 ++++++-------- src/control/AppController.hx | 4 +++ src/control/NekoDrawerEvent.hx | 14 ++++++++ src/view/MainHeader.hx | 11 ++++-- 8 files changed, 125 insertions(+), 18 deletions(-) create mode 100644 src/command/NekoDrawerCommand.hx create mode 100644 src/components/NekoDrawer.hx create mode 100644 src/control/NekoDrawerEvent.hx diff --git a/project.xml b/project.xml index 0d96aab..088335b 100644 --- a/project.xml +++ b/project.xml @@ -31,6 +31,6 @@ - + \ No newline at end of file diff --git a/src/LPTCManager2026.hx b/src/LPTCManager2026.hx index 2a2563a..d1d1f19 100644 --- a/src/LPTCManager2026.hx +++ b/src/LPTCManager2026.hx @@ -1,3 +1,7 @@ +import control.NekoDrawerEvent; +import com.adobe.cairngorm.control.CairngormEvent; +import components.NekoDrawer; +import feathers.controls.Drawer; import control.AppController; import business.Services; import model.AppModelLocator; @@ -25,6 +29,7 @@ class LPTCManager2026 extends Application { private var services:Services; private var appController:AppController; private var mainPanel:MainPanel; + private var dr:NekoDrawer; // private var nav:StackNavigator; @@ -48,6 +53,10 @@ class LPTCManager2026 extends Application { mainPanel = new MainPanel(); addChild(mainPanel); + dr = new NekoDrawer(); + dr.addEventListener(NekoDrawerEvent.STATUS_CHANGE, onDrawerStatusChange); + addChild(dr); + /*mainPanel = new Panel(); mainPanel.autoSizeMode = STAGE; mainPanel.backgroundSkin = new NekoRectangle(Constants.MAIN_COLOR3); @@ -106,7 +115,12 @@ class LPTCManager2026 extends Application { } private function onCreationComplete(event:FeathersEvent):Void { - traceBlue(this + " --> onCreationComplete()"); + traceBlue("Application --> onCreationComplete()"); loadRiders(); } + + private function onDrawerStatusChange(e:NekoDrawerEvent):Void + { + trace("ALO ? " + e.openDrawer); + } } diff --git a/src/command/NekoDrawerCommand.hx b/src/command/NekoDrawerCommand.hx new file mode 100644 index 0000000..a768e6a --- /dev/null +++ b/src/command/NekoDrawerCommand.hx @@ -0,0 +1,15 @@ +package command; + +import com.adobe.cairngorm.commands.ICommand; +import com.adobe.cairngorm.control.CairngormEvent; +import control.NekoDrawerEvent; +import model.AppModelLocator; + +class NekoDrawerCommand implements ICommand { + private var model = AppModelLocator.getInstance(); + + public function execute(e:CairngormEvent):Void { + var e:NekoDrawerEvent = cast(e, NekoDrawerEvent); + //trace("OpenDrawer ? : " + e.openDrawer); + } +} diff --git a/src/components/NekoDrawer.hx b/src/components/NekoDrawer.hx new file mode 100644 index 0000000..830728b --- /dev/null +++ b/src/components/NekoDrawer.hx @@ -0,0 +1,57 @@ +package components; + +import feathers.events.TriggerEvent; +import feathers.controls.Button; +import feathers.layout.VerticalLayout; +import feathers.controls.LayoutGroup; +import feathers.events.FeathersEvent; +import t9.util.ColorTraces.*; +import feathers.controls.Drawer; + +class NekoDrawer extends Drawer { + + private var openDrawerButton:Button; + private var closeDrawerButton:Button; + private var coucou:Bool; + + public function new() { + super(); + addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); + } + + override private function initialize():Void { + super.initialize(); + + var c1 = new LayoutGroup(); + var contentLayout = new VerticalLayout(); + contentLayout.horizontalAlign = CENTER; + contentLayout.verticalAlign = MIDDLE; + c1.layout = contentLayout; + openDrawerButton = new Button(); + openDrawerButton.text = "Open Drawer"; + openDrawerButton.addEventListener(TriggerEvent.TRIGGER, (event) -> { + opened = true; + }); + c1.addChild(openDrawerButton); + + content = c1; + + var d1 = new LayoutGroup(); + var drawerLayout = new VerticalLayout(); + drawerLayout.horizontalAlign = CENTER; + drawerLayout.verticalAlign = MIDDLE; + d1.layout = drawerLayout; + closeDrawerButton = new Button(); + closeDrawerButton.text = "Close Drawer"; + closeDrawerButton.addEventListener(TriggerEvent.TRIGGER, (event) -> { + opened = false; + }); + d1.addChild(closeDrawerButton); + + drawer = d1; + } + + private function onCreationComplete(event:FeathersEvent):Void { + traceBlue(this + " --> onCreationComplete()"); + } +} diff --git a/src/components/NekoIconButton.hx b/src/components/NekoIconButton.hx index 65b93b5..57d56ba 100644 --- a/src/components/NekoIconButton.hx +++ b/src/components/NekoIconButton.hx @@ -5,18 +5,16 @@ import openfl.display.BitmapData; import feathers.controls.Button; import t9.util.ColorTraces.*; -class NekoIconButton extends Button{ +class NekoIconButton extends Button { + private var bmp:Bitmap; - private var bmp:Bitmap; + public function new(pSkin:BitmapData, pX:Int = 0, pY:Int = 0, pWidth:Int = 100, pHeight:Int = 100) { + super(); - public function new(pSkin:BitmapData, pX:Int = 0, pY:Int = 0, pWidth:Int = 100, pHeight:Int = 100) { - - super(); - - bmp = new Bitmap(pSkin); - backgroundSkin = bmp; - bmp.width = pWidth; - bmp.height = pHeight; - bmp.smoothing = true; - } -} \ No newline at end of file + bmp = new Bitmap(pSkin); + backgroundSkin = bmp; + bmp.width = pWidth; + bmp.height = pHeight; + bmp.smoothing = true; + } +} diff --git a/src/control/AppController.hx b/src/control/AppController.hx index db84798..6a6c5a6 100644 --- a/src/control/AppController.hx +++ b/src/control/AppController.hx @@ -1,13 +1,17 @@ package control; +import command.NekoDrawerCommand; +import components.NekoDrawer; import command.LoadRidersCommand; import com.adobe.cairngorm.control.FrontController; class AppController extends FrontController { public static final LOAD_RIDERS_EVENT = "loadRidersEvent"; + public static final NEKO_DRAWER_EVENT = "nekoDrawerEvent"; public function new() { super(); addCommand(AppController.LOAD_RIDERS_EVENT, LoadRidersCommand); + addCommand(AppController.NEKO_DRAWER_EVENT, NekoDrawerCommand); } } diff --git a/src/control/NekoDrawerEvent.hx b/src/control/NekoDrawerEvent.hx new file mode 100644 index 0000000..21482fa --- /dev/null +++ b/src/control/NekoDrawerEvent.hx @@ -0,0 +1,14 @@ +package control; + +import com.adobe.cairngorm.control.CairngormEvent; + +class NekoDrawerEvent extends CairngormEvent { + + public static final STATUS_CHANGE:String = "statusChange"; + public var openDrawer:Bool; + + public function new(pOpenDrawer:Bool) { + super(AppController.NEKO_DRAWER_EVENT); + openDrawer = pOpenDrawer; + } +} \ No newline at end of file diff --git a/src/view/MainHeader.hx b/src/view/MainHeader.hx index 93defb2..77b2660 100644 --- a/src/view/MainHeader.hx +++ b/src/view/MainHeader.hx @@ -1,5 +1,9 @@ package view; +import control.NekoDrawerEvent; +import components.NekoDrawer; +import com.adobe.cairngorm.control.CairngormEvent; +import com.adobe.cairngorm.control.CairngormEventDispatcher; import components.NekoIconButton; import openfl.display.Bitmap; import feathers.events.TriggerEvent; @@ -75,8 +79,9 @@ class MainHeader extends LayoutGroup { traceBlue(this + " --> onCreationComplete()"); } - function onDBtnPress(event:TriggerEvent):Void { - var button = cast(event.currentTarget, Button); - trace("button triggered: " + button.text); + function onDBtnPress(e:TriggerEvent):Void { + //var button = cast(e.currentTarget, NekoIconButton); + var e = new NekoDrawerEvent(true); + CairngormEventDispatcher.getInstance().dispatchEvent(e); } } \ No newline at end of file