From 3a39645a4118510edea527763733f167acb6578d Mon Sep 17 00:00:00 2001 From: "C. Alexander Leigh" Date: Tue, 14 Feb 2023 10:50:54 -0800 Subject: [PATCH] lc-isf-tc: Introduced the concept of a ScreenFactory --- .../src/main/java/lc/isf/app/ScreenApp.java | 4 ++++ .../java/lc/isf/screen/ScreenFactory.java | 19 +++++++++++++++++++ .../main/java/lc/isf/tc/ScreenController.java | 9 +++++++-- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java diff --git a/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java b/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java index 36eacd5a8..97f8fa1b7 100644 --- a/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java +++ b/lc-isf-tc/src/main/java/lc/isf/app/ScreenApp.java @@ -1,5 +1,7 @@ package lc.isf.app; +import lc.isf.screen.ScreenFactory; + import java.util.Map; public interface ScreenApp { @@ -10,4 +12,6 @@ public interface ScreenApp { * @param func */ CallReturn call(String func, Map values); + + ScreenFactory getScreenFactory(); } diff --git a/lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java b/lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java new file mode 100644 index 000000000..21def9634 --- /dev/null +++ b/lc-isf-tc/src/main/java/lc/isf/screen/ScreenFactory.java @@ -0,0 +1,19 @@ +package lc.isf.screen; + +import lc.isf.tc.ScreenController; + +import java.io.IOException; + +/** + * The place you go to make screens, of course. Screen factories are application specific, so to locate any + * given screen, you need to know the name of the application & the name of the screen. + * + * @author Alex Leigh + * @since 1.0 + */ +public class ScreenFactory { + public ScreenPackage makeScreenPkg(String name, ScreenController ctl) throws IOException { + // FIXME: Ensure this is actually a safe string + return new JsonScreenPackage("/screen/" + name, ctl); + } +} diff --git a/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java b/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java index 7a4ea9db1..d2efa41e3 100644 --- a/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java +++ b/lc-isf-tc/src/main/java/lc/isf/tc/ScreenController.java @@ -9,7 +9,7 @@ import com.googlecode.lanterna.terminal.Terminal; import lc.isf.app.CallReturn; import lc.isf.app.MessageReturn; import lc.isf.app.ScreenApp; -import lc.isf.screen.JsonScreenPackage; +import lc.isf.screen.ScreenFactory; import lc.isf.screen.ScreenPackage; import lc.isf.widget.Widget; import lc.mecha.lang.StringValue; @@ -48,8 +48,13 @@ public class ScreenController { public CallReturn call(String func, Map values) { return new MessageReturn("Test 1-2-3"); } + + @Override + public ScreenFactory getScreenFactory() { + return new ScreenFactory(); + } }; - pkg = new JsonScreenPackage("/screen/logon", this); + pkg = app.getScreenFactory().makeScreenPkg("logon", this); } public Map gatherValues() { -- GitLab