From d27fe111b9f48abcc43b99f2ba3ce17229818f1b Mon Sep 17 00:00:00 2001 From: nekotoro Date: Wed, 19 Nov 2025 22:13:11 +0100 Subject: [PATCH] drawer event chain complete --- src/LPTCManager2026.hx | 14 +++++++++++--- src/command/NekoDrawerCommand.hx | 2 +- src/components/NekoDrawer.hx | 23 ++++++++--------------- src/control/AppController.hx | 1 + src/control/NekoDrawerEvent.hx | 8 ++++---- src/model/AppModelLocator.hx | 17 +++++++++++++++-- src/view/MainHeader.hx | 25 +++++++++---------------- 7 files changed, 49 insertions(+), 41 deletions(-) diff --git a/src/LPTCManager2026.hx b/src/LPTCManager2026.hx index d1d1f19..a103ab6 100644 --- a/src/LPTCManager2026.hx +++ b/src/LPTCManager2026.hx @@ -1,3 +1,5 @@ +import haxe.macro.Expr.Case; +import openfl.events.Event; import control.NekoDrawerEvent; import com.adobe.cairngorm.control.CairngormEvent; import components.NekoDrawer; @@ -54,9 +56,11 @@ class LPTCManager2026 extends Application { addChild(mainPanel); dr = new NekoDrawer(); - dr.addEventListener(NekoDrawerEvent.STATUS_CHANGE, onDrawerStatusChange); + //dr.addEventListener(NekoDrawerEvent.STATUS_CHANGE, onDrawerStatusChange); addChild(dr); + model.addEventListener(NekoDrawerEvent.DRAWER_STATE_CHANGE, onDrawerStateChange); + /*mainPanel = new Panel(); mainPanel.autoSizeMode = STAGE; mainPanel.backgroundSkin = new NekoRectangle(Constants.MAIN_COLOR3); @@ -119,8 +123,12 @@ class LPTCManager2026 extends Application { loadRiders(); } - private function onDrawerStatusChange(e:NekoDrawerEvent):Void + private function onDrawerStateChange(e:Event):Void { - trace("ALO ? " + e.openDrawer); + switch (model.drawerState) { + case NekoDrawer.OPEN : dr.openDrawer(); + case NekoDrawer.CLOSE : dr.closeDrawer(); + default : dr.closeDrawer(); + } } } diff --git a/src/command/NekoDrawerCommand.hx b/src/command/NekoDrawerCommand.hx index a768e6a..8a41bce 100644 --- a/src/command/NekoDrawerCommand.hx +++ b/src/command/NekoDrawerCommand.hx @@ -10,6 +10,6 @@ class NekoDrawerCommand implements ICommand { public function execute(e:CairngormEvent):Void { var e:NekoDrawerEvent = cast(e, NekoDrawerEvent); - //trace("OpenDrawer ? : " + e.openDrawer); + model.drawerState = e.drawerState; } } diff --git a/src/components/NekoDrawer.hx b/src/components/NekoDrawer.hx index 830728b..ae7e435 100644 --- a/src/components/NekoDrawer.hx +++ b/src/components/NekoDrawer.hx @@ -1,5 +1,6 @@ package components; +import model.Constants; import feathers.events.TriggerEvent; import feathers.controls.Button; import feathers.layout.VerticalLayout; @@ -10,6 +11,9 @@ import feathers.controls.Drawer; class NekoDrawer extends Drawer { + public static final CLOSE:String = "close"; + public static final OPEN:String = "open"; + private var openDrawerButton:Button; private var closeDrawerButton:Button; private var coucou:Bool; @@ -22,24 +26,11 @@ class NekoDrawer extends Drawer { 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.setPadding(10); drawerLayout.horizontalAlign = CENTER; - drawerLayout.verticalAlign = MIDDLE; + drawerLayout.verticalAlign = TOP; d1.layout = drawerLayout; closeDrawerButton = new Button(); closeDrawerButton.text = "Close Drawer"; @@ -48,6 +39,8 @@ class NekoDrawer extends Drawer { }); d1.addChild(closeDrawerButton); + overlaySkin = new NekoRectangle(Constants.HERO_COLOR); + drawer = d1; } diff --git a/src/control/AppController.hx b/src/control/AppController.hx index 6a6c5a6..601dd93 100644 --- a/src/control/AppController.hx +++ b/src/control/AppController.hx @@ -6,6 +6,7 @@ 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"; diff --git a/src/control/NekoDrawerEvent.hx b/src/control/NekoDrawerEvent.hx index 21482fa..4409368 100644 --- a/src/control/NekoDrawerEvent.hx +++ b/src/control/NekoDrawerEvent.hx @@ -4,11 +4,11 @@ import com.adobe.cairngorm.control.CairngormEvent; class NekoDrawerEvent extends CairngormEvent { - public static final STATUS_CHANGE:String = "statusChange"; - public var openDrawer:Bool; + public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; + public var drawerState:String; - public function new(pOpenDrawer:Bool) { + public function new(pDrawerState:String) { super(AppController.NEKO_DRAWER_EVENT); - openDrawer = pOpenDrawer; + drawerState = pDrawerState; } } \ No newline at end of file diff --git a/src/model/AppModelLocator.hx b/src/model/AppModelLocator.hx index d569bd2..ecd4565 100644 --- a/src/model/AppModelLocator.hx +++ b/src/model/AppModelLocator.hx @@ -1,5 +1,7 @@ package model; +import components.NekoDrawer; +import control.NekoDrawerEvent; import vo.Rider; import feathers.data.ArrayCollection; import openfl.errors.Error; @@ -10,14 +12,16 @@ import openfl.events.EventDispatcher; class AppModelLocator extends EventDispatcher implements IModelLocator { // events constants - public static final VIEWING_CHANGE = "viewingChange"; - public static final RIDERS_LIST_DP_CHANGE = "ridersListDPChange"; + public static final VIEWING_CHANGE:String = "viewingChange"; + public static final RIDERS_LIST_DP_CHANGE:String = "ridersListDPChange"; + //public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; // this instance stores a static reference to itself private static var model:AppModelLocator; // available values for the main viewstack defined as constants to help uncover errors at compile time instead of run time + // Navigator public static final ADMIN_LOGIN = 0; public static final RIDERS_LIST = 1; public static final RIDER_DETAIL = 2; @@ -31,6 +35,15 @@ class AppModelLocator extends EventDispatcher implements IModelLocator { return viewing; } + // at startup, the drawer is closed + public var drawerState(default, set):String = NekoDrawer.CLOSE; + + private function set_drawerState(pState:String):String { + drawerState = pState; + dispatchEvent(new Event(NekoDrawerEvent.DRAWER_STATE_CHANGE)); + return drawerState; + } + // rider object contains uid/passwd // its value gets set at login and cleared at logout but nothing binds to it or uses it // retained since it was used in the original Adobe CafeTownsend example app diff --git a/src/view/MainHeader.hx b/src/view/MainHeader.hx index 77b2660..b5f4a0c 100644 --- a/src/view/MainHeader.hx +++ b/src/view/MainHeader.hx @@ -1,26 +1,19 @@ package view; +import com.adobe.cairngorm.control.CairngormEventDispatcher; 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 components.NekoRectangle; +import feathers.controls.Label; +import feathers.controls.LayoutGroup; +import feathers.events.FeathersEvent; import feathers.events.TriggerEvent; -import feathers.controls.Button; import feathers.layout.HorizontalLayout; -import feathers.layout.AnchorLayoutData; import feathers.text.TextFormat; +import model.Constants; import openfl.Assets; import openfl.text.Font; -import feathers.layout.VerticalAlign; -import feathers.controls.Label; -import feathers.layout.AnchorLayout; -import components.NekoRectangle; -import feathers.controls.LayoutGroup; -import feathers.controls.Panel; -import feathers.events.FeathersEvent; -import model.Constants; import t9.util.ColorTraces.*; class MainHeader extends LayoutGroup { @@ -79,9 +72,9 @@ class MainHeader extends LayoutGroup { traceBlue(this + " --> onCreationComplete()"); } + function onDBtnPress(e:TriggerEvent):Void { - //var button = cast(e.currentTarget, NekoIconButton); - var e = new NekoDrawerEvent(true); - CairngormEventDispatcher.getInstance().dispatchEvent(e); + var ce:NekoDrawerEvent = new NekoDrawerEvent(NekoDrawer.OPEN); + CairngormEventDispatcher.getInstance().dispatchEvent(ce); } } \ No newline at end of file