From 8b8f0b9712bf9bfa009cff9e2e4b560589f0dd50 Mon Sep 17 00:00:00 2001 From: nekotoro Date: Fri, 21 Nov 2025 10:53:50 +0100 Subject: [PATCH] Drawer related refactoring : - removed NekoDrawerEvent Button related refactoring : - removed NekoIconButton --- src/LPTCManager2026.hx | 95 +++---------------- ...DrawerCommand.hx => CloseDrawerCommand.hx} | 8 +- src/command/OpenDrawerCommand.hx | 15 +++ src/components/NekoIconButton.hx | 83 ---------------- src/control/AppController.hx | 11 ++- src/control/NekoDrawerEvent.hx | 14 --- src/model/AppModelLocator.hx | 15 ++- src/model/Constants.hx | 7 +- .../NekoDrawer.hx => view/MainDrawer.hx} | 5 +- src/view/MainFooter.hx | 26 ----- src/view/MainHeader.hx | 39 ++++---- src/view/MainPanel.hx | 4 +- 12 files changed, 73 insertions(+), 249 deletions(-) rename src/command/{NekoDrawerCommand.hx => CloseDrawerCommand.hx} (60%) create mode 100644 src/command/OpenDrawerCommand.hx delete mode 100644 src/components/NekoIconButton.hx delete mode 100644 src/control/NekoDrawerEvent.hx rename src/{components/NekoDrawer.hx => view/MainDrawer.hx} (94%) diff --git a/src/LPTCManager2026.hx b/src/LPTCManager2026.hx index 1fd14b3..c012d16 100644 --- a/src/LPTCManager2026.hx +++ b/src/LPTCManager2026.hx @@ -1,49 +1,31 @@ -import haxe.macro.Expr.Case; -import openfl.events.Event; -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; import com.adobe.cairngorm.control.CairngormEventDispatcher; +import control.AppController; import control.LoadRidersEvent; -import feathers.events.FeathersEvent; -import feathers.layout.VerticalAlign; -import components.NekoRectangle; import feathers.controls.Application; -import feathers.controls.Label; -import feathers.controls.LayoutGroup; -import feathers.controls.Panel; -import feathers.layout.AnchorLayout; -import feathers.layout.AnchorLayoutData; -import feathers.text.TextFormat; -import model.Constants; -import openfl.Assets; -import openfl.text.Font; +import feathers.events.FeathersEvent; +import model.AppModelLocator; +import openfl.events.Event; import t9.util.ColorTraces.*; +import view.MainDrawer; import view.MainPanel; class LPTCManager2026 extends Application { - private var model:AppModelLocator; - private var services:Services; + private var services:Services; private var appController:AppController; private var mainPanel:MainPanel; - private var dr:NekoDrawer; + private var dr:MainDrawer; // private var nav:StackNavigator; public function new() { - super(); model = AppModelLocator.getInstance(); services = new Services(); appController = new AppController(); addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); - } override private function initialize():Void { @@ -55,60 +37,12 @@ class LPTCManager2026 extends Application { mainPanel = new MainPanel(); addChild(mainPanel); - dr = new NekoDrawer(); + dr = new MainDrawer(); addChild(dr); - model.addEventListener(NekoDrawerEvent.DRAWER_STATE_CHANGE, onDrawerStateChange); - - /*mainPanel = new Panel(); - mainPanel.autoSizeMode = STAGE; - mainPanel.backgroundSkin = new NekoRectangle(Constants.MAIN_COLOR3); - - // ############################################################################################# HEADER - var header = new LayoutGroup(); - header.autoSizeMode = CONTENT; - header.backgroundSkin = new NekoRectangle(Constants.HERO_COLOR, 0, 0, Std.int(stage.stageWidth * Constants.MAIN_HEADER_WIDTH_RATIO), Std.int(stage.stageHeight * Constants.MAIN_HEADER_HEIGHT_RATIO)); - header.variant = LayoutGroup.VARIANT_TOOL_BAR; - header.layout = new AnchorLayout(); - - var title = new Label(); - title.backgroundSkin = new NekoRectangle(Constants.ACCENT_COLOR2, 0, 0, 200, 80); - title.verticalAlign = VerticalAlign.MIDDLE; - title.text = "Header"; - title.embedFonts = true; - var fnt:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500); + model.addEventListener(AppModelLocator.DRAWER_STATE_CHANGE, onDrawerStateChange); - var tf:TextFormat = new TextFormat(fnt.fontName, Std.int(stage.stageHeight * Constants.MAIN_HEADER_HEIGHT_RATIO * .1), Constants.MAIN_COLOR3); - title.textFormat = tf; - - title.variant = Label.VARIANT_HEADING; - title.layoutData = AnchorLayoutData.center(); - header.addChild(title); - - mainPanel.header = header; - - // ############################################################################################# FOOTER - var footer = new LayoutGroup(); - - footer.autoSizeMode = CONTENT; - footer.backgroundSkin = new NekoRectangle(Constants.MAIN_COLOR2, 0, 0, stage.stageWidth, Std.int(stage.stageHeight * 10 / 100)); - footer.variant = LayoutGroup.VARIANT_TOOL_BAR; - footer.layout = new AnchorLayout(); - - var title = new Label(); - title.text = "Footer"; - //title.embedFonts = true; - title.variant = Label.VARIANT_HEADING; - title.layoutData = AnchorLayoutData.center(); - footer.addChild(title); - - mainPanel.footer = footer; - - addChild(mainPanel);*/ - - // nav = new StackNavigator(); - - traceBlue(this + " --> initialize()"); + //traceBlue(this + " --> initialize()"); } private function loadRiders():Void { @@ -122,12 +56,7 @@ class LPTCManager2026 extends Application { loadRiders(); } - private function onDrawerStateChange(e:Event):Void - { - switch (model.drawerState) { - case NekoDrawer.OPEN : dr.openDrawer(); - case NekoDrawer.CLOSE : dr.closeDrawer(); - default : dr.closeDrawer(); - } + private function onDrawerStateChange(e:Event):Void { + model.drawerIsOpen ? dr.openDrawer() : dr.closeDrawer(); } } diff --git a/src/command/NekoDrawerCommand.hx b/src/command/CloseDrawerCommand.hx similarity index 60% rename from src/command/NekoDrawerCommand.hx rename to src/command/CloseDrawerCommand.hx index 8a41bce..40cb62c 100644 --- a/src/command/NekoDrawerCommand.hx +++ b/src/command/CloseDrawerCommand.hx @@ -1,15 +1,15 @@ package command; +import model.Constants; import com.adobe.cairngorm.commands.ICommand; import com.adobe.cairngorm.control.CairngormEvent; -import control.NekoDrawerEvent; import model.AppModelLocator; +import t9.util.ColorTraces.*; -class NekoDrawerCommand implements ICommand { +class CloseDrawerCommand implements ICommand { private var model = AppModelLocator.getInstance(); public function execute(e:CairngormEvent):Void { - var e:NekoDrawerEvent = cast(e, NekoDrawerEvent); - model.drawerState = e.drawerState; + model.drawerIsOpen = false; } } diff --git a/src/command/OpenDrawerCommand.hx b/src/command/OpenDrawerCommand.hx new file mode 100644 index 0000000..f1f987e --- /dev/null +++ b/src/command/OpenDrawerCommand.hx @@ -0,0 +1,15 @@ +package command; + +import model.Constants; +import com.adobe.cairngorm.commands.ICommand; +import com.adobe.cairngorm.control.CairngormEvent; +import model.AppModelLocator; +import t9.util.ColorTraces.*; + +class OpenDrawerCommand implements ICommand { + private var model = AppModelLocator.getInstance(); + + public function execute(e:CairngormEvent):Void { + model.drawerIsOpen = true; + } +} diff --git a/src/components/NekoIconButton.hx b/src/components/NekoIconButton.hx deleted file mode 100644 index bed730e..0000000 --- a/src/components/NekoIconButton.hx +++ /dev/null @@ -1,83 +0,0 @@ -package components; - -import feathers.controls.Button; -import feathers.controls.Label; -import feathers.events.FeathersEvent; -import format.SVG; -import model.Constants; -import openfl.Assets; -import openfl.display.Shape; -import openfl.geom.ColorTransform; -import openfl.text.Font; -import openfl.text.TextFormat; -import t9.util.ColorTraces.*; - -class NekoIconButton extends Button { - - private var svgSkinPath:String; - private var w:Int; - private var h:Int; - private var normalStateColor:Int; - private var selectedStateColor:Int; - private var disabledStateColor:Int; - private var backgroundColor:Int; - private var t:String; - - private var iconShape:Shape; - private var lb1:Label; - - public function new(pSvgSkinPath:String, - pWidth:Int = 100, - pHeight:Int = 100, - pNormalStateColor:Int = 0x000000, - pSelectedStateColor:Int = 0xFF0000, - pDisabledStateColor:Int = 0xAAAAAA, - pBackgroundColor:Int = null, - pText:String = null) { - super(); - - svgSkinPath = pSvgSkinPath; - w = pWidth; - h = pHeight; - normalStateColor = pNormalStateColor; - selectedStateColor = pSelectedStateColor; - disabledStateColor = pDisabledStateColor; - backgroundColor = pBackgroundColor; - t = pText; - - addEventListener(FeathersEvent.CREATION_COMPLETE, onCreationComplete); - - if(pBackgroundColor == null){ - backgroundSkin = new NekoRectangle(0xFF0000, 0, 0, pWidth, pHeight); - backgroundSkin.alpha = 0; - } else { - backgroundSkin = new NekoRectangle(pBackgroundColor, 0, 0, pWidth, pHeight); - } - - iconShape = new Shape(); - new SVG(pSvgSkinPath).render(iconShape.graphics); - iconShape.width = pWidth; - iconShape.height = pHeight; - - var ct = new ColorTransform(); - ct.color = pNormalStateColor; - iconShape.transform.colorTransform = ct; - addChild(iconShape); - - if(pText != null){ - lb1.text = Constants.MENU_ITEM_0_STRING; - lb1.embedFonts = true; - var fnt:Font = Assets.getFont(Constants.MONTSERRAT_LIGHT_300); - lb1.textFormat = new TextFormat(fnt.fontName, 20, Constants.BUTTON_NORMAL_STATE_COLOR); - addChild(lb1); - } - } - - override private function initialize():Void { - - } - - private function onCreationComplete(event:FeathersEvent):Void { - traceBlue(this + " --> onCreationComplete()"); - } -} diff --git a/src/control/AppController.hx b/src/control/AppController.hx index 601dd93..a262334 100644 --- a/src/control/AppController.hx +++ b/src/control/AppController.hx @@ -1,18 +1,21 @@ package control; -import command.NekoDrawerCommand; -import components.NekoDrawer; +import command.CloseDrawerCommand; import command.LoadRidersCommand; +import command.OpenDrawerCommand; 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 static final OPEN_DRAWER_EVENT = "openDrawerEvent"; + public static final CLOSE_DRAWER_EVENT = "closeDrawerEvent"; + public function new() { super(); addCommand(AppController.LOAD_RIDERS_EVENT, LoadRidersCommand); - addCommand(AppController.NEKO_DRAWER_EVENT, NekoDrawerCommand); + addCommand(AppController.OPEN_DRAWER_EVENT, OpenDrawerCommand); + addCommand(AppController.CLOSE_DRAWER_EVENT, CloseDrawerCommand); } } diff --git a/src/control/NekoDrawerEvent.hx b/src/control/NekoDrawerEvent.hx deleted file mode 100644 index 4409368..0000000 --- a/src/control/NekoDrawerEvent.hx +++ /dev/null @@ -1,14 +0,0 @@ -package control; - -import com.adobe.cairngorm.control.CairngormEvent; - -class NekoDrawerEvent extends CairngormEvent { - - public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; - public var drawerState:String; - - public function new(pDrawerState:String) { - super(AppController.NEKO_DRAWER_EVENT); - drawerState = pDrawerState; - } -} \ No newline at end of file diff --git a/src/model/AppModelLocator.hx b/src/model/AppModelLocator.hx index ecd4565..124834b 100644 --- a/src/model/AppModelLocator.hx +++ b/src/model/AppModelLocator.hx @@ -1,20 +1,19 @@ package model; -import components.NekoDrawer; -import control.NekoDrawerEvent; import vo.Rider; import feathers.data.ArrayCollection; import openfl.errors.Error; import openfl.events.Event; import com.adobe.cairngorm.model.IModelLocator; import openfl.events.EventDispatcher; +import t9.util.ColorTraces.*; class AppModelLocator extends EventDispatcher implements IModelLocator { // events constants public static final VIEWING_CHANGE:String = "viewingChange"; public static final RIDERS_LIST_DP_CHANGE:String = "ridersListDPChange"; - //public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; + public static final DRAWER_STATE_CHANGE:String = "drawerStateChange"; // this instance stores a static reference to itself @@ -36,12 +35,12 @@ class AppModelLocator extends EventDispatcher implements IModelLocator { } // at startup, the drawer is closed - public var drawerState(default, set):String = NekoDrawer.CLOSE; + public var drawerIsOpen(default, set):Bool = false; - private function set_drawerState(pState:String):String { - drawerState = pState; - dispatchEvent(new Event(NekoDrawerEvent.DRAWER_STATE_CHANGE)); - return drawerState; + private function set_drawerIsOpen(pIsOpen:Bool):Bool { + drawerIsOpen = pIsOpen; + dispatchEvent(new Event(AppModelLocator.DRAWER_STATE_CHANGE)); + return drawerIsOpen; } // rider object contains uid/passwd diff --git a/src/model/Constants.hx b/src/model/Constants.hx index 02394df..042e601 100644 --- a/src/model/Constants.hx +++ b/src/model/Constants.hx @@ -21,10 +21,15 @@ class Constants { public static final MONTSERRAT_MEDIUM_500:String = "MontserratMedium500"; public static final MONTSERRAT_BOLD_700:String = "MontserratBold700"; - // UI Proportions against satge dimmentions + // UI Proportions against stage dimmensions public static final MAIN_HEADER_WIDTH_RATIO:Float = 1; public static final MAIN_HEADER_HEIGHT_RATIO:Float = 0.1; + // Event strings + public static final OPEN_DRAWER:String = "openDrawer"; + public static final CLOSE_DRAWER:String = "closeDrawer"; + public static final DRAWER_IS_OPEN:Bool = false; + // Strings public static final MENU_ITEM_0_STRING:String = "CavalierĀ·eĀ·s"; public static final MENU_ITEM_1_STRING:String = "Licences FFE"; diff --git a/src/components/NekoDrawer.hx b/src/view/MainDrawer.hx similarity index 94% rename from src/components/NekoDrawer.hx rename to src/view/MainDrawer.hx index ae7e435..f51729a 100644 --- a/src/components/NekoDrawer.hx +++ b/src/view/MainDrawer.hx @@ -1,5 +1,6 @@ -package components; +package view; +import components.NekoRectangle; import model.Constants; import feathers.events.TriggerEvent; import feathers.controls.Button; @@ -9,7 +10,7 @@ import feathers.events.FeathersEvent; import t9.util.ColorTraces.*; import feathers.controls.Drawer; -class NekoDrawer extends Drawer { +class MainDrawer extends Drawer { public static final CLOSE:String = "close"; public static final OPEN:String = "open"; diff --git a/src/view/MainFooter.hx b/src/view/MainFooter.hx index 08bb63f..cb9e6d5 100644 --- a/src/view/MainFooter.hx +++ b/src/view/MainFooter.hx @@ -3,7 +3,6 @@ package view; import openfl.display.Stage; import haxe.CallStack.StackItem; import openfl.Assets; -import components.NekoIconButton; import feathers.layout.HorizontalLayout; import model.Constants; import components.NekoRectangle; @@ -13,9 +12,6 @@ import t9.util.ColorTraces.*; class MainFooter extends LayoutGroup { - private var ridersButton:NekoIconButton; - private var ffeLicencesButton:NekoIconButton; - public function new() { super(); @@ -40,28 +36,6 @@ class MainFooter extends LayoutGroup { l.verticalAlign = MIDDLE; layout = l; - // Drawer button - ridersButton = new NekoIconButton(Assets.getText("vector/rider_icon_black.svg"), - 40, - 40, - Constants.BUTTON_NORMAL_STATE_COLOR, - Constants.BUTTON_SELECTED_STATE_COLOR, - Constants.BUTTON_DISABLED_STATE_COLOR, - Constants.MENU_ITEM_0_STRING); - //ridersButton.addEventListener(TriggerEvent.TRIGGER, onRidersBtnPress); - addChild(ridersButton); - - // Drawer button - ffeLicencesButton = new NekoIconButton(Assets.getText("vector/certificate_icon_black.svg"), - 40, - 40, - Constants.BUTTON_NORMAL_STATE_COLOR, - Constants.BUTTON_SELECTED_STATE_COLOR, - Constants.BUTTON_DISABLED_STATE_COLOR, - Constants.MENU_ITEM_1_STRING); - //ffeLicencesButton.addEventListener(TriggerEvent.TRIGGER, onFfeLicencesButtonPress); - addChild(ffeLicencesButton); - } private function onCreationComplete(event:FeathersEvent):Void { diff --git a/src/view/MainHeader.hx b/src/view/MainHeader.hx index b05d313..7bd3c2a 100644 --- a/src/view/MainHeader.hx +++ b/src/view/MainHeader.hx @@ -1,10 +1,10 @@ package view; +import control.AppController; +import com.adobe.cairngorm.control.CairngormEvent; import com.adobe.cairngorm.control.CairngormEventDispatcher; -import control.NekoDrawerEvent; -import components.NekoDrawer; -import components.NekoIconButton; import components.NekoRectangle; +import feathers.controls.Button; import feathers.controls.Label; import feathers.controls.LayoutGroup; import feathers.events.FeathersEvent; @@ -18,8 +18,8 @@ import t9.util.ColorTraces.*; class MainHeader extends LayoutGroup { - private var lb1:Label; - private var drawerBtn:NekoIconButton; + private var btn1:Button; + private var lbl1:Label; public function new() { super(); @@ -50,26 +50,21 @@ class MainHeader extends LayoutGroup { l.verticalAlign = MIDDLE; layout = l; - // Drawer button - drawerBtn = new NekoIconButton(Assets.getText("vector/menu_icon_black.svg"), - Std.int(headerHeight * .5), - Std.int(headerHeight * .5), - Constants.BUTTON_INVERTED_NORMAL_STATE_COLOR); - drawerBtn.addEventListener(TriggerEvent.TRIGGER, onDBtnPress); - addChild(drawerBtn); - - + // Menu button + btn1 = new Button("menu", onMenuButtonPress); + addChild(btn1); + // Title label - lb1 = new Label(); + lbl1 = new Label(); //lb1.backgroundSkin = new NekoRectangle(Constants.ACCENT_COLOR2); //lb1.verticalAlign = VerticalAlign.TOP; - lb1.text = Constants.MENU_ITEM_0_STRING; - lb1.embedFonts = true; + lbl1.text = Constants.MENU_ITEM_0_STRING; + lbl1.embedFonts = true; var fnt:Font = Assets.getFont(Constants.MONTSERRAT_MEDIUM_500); - lb1.textFormat = new TextFormat(fnt.fontName, Std.int(headerHeight * .4), Constants.MAIN_COLOR3); - addChild(lb1); + lbl1.textFormat = new TextFormat(fnt.fontName, Std.int(headerHeight * .4), Constants.MAIN_COLOR3); + addChild(lbl1); } private function onCreationComplete(event:FeathersEvent):Void { @@ -77,8 +72,8 @@ class MainHeader extends LayoutGroup { } - function onDBtnPress(e:TriggerEvent):Void { - var ce:NekoDrawerEvent = new NekoDrawerEvent(NekoDrawer.OPEN); - CairngormEventDispatcher.getInstance().dispatchEvent(ce); + function onMenuButtonPress(e:TriggerEvent):Void { + var e:CairngormEvent = new CairngormEvent(AppController.OPEN_DRAWER_EVENT); + CairngormEventDispatcher.getInstance().dispatchEvent(e); } } \ No newline at end of file diff --git a/src/view/MainPanel.hx b/src/view/MainPanel.hx index 94dd749..ef5e1e5 100644 --- a/src/view/MainPanel.hx +++ b/src/view/MainPanel.hx @@ -26,8 +26,8 @@ class MainPanel extends Panel { mh = new MainHeader(); header = mh; - mf = new MainFooter(); - footer = mf; + //mf = new MainFooter(); + //footer = mf; } private function onCreationComplete(event:FeathersEvent):Void {