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 36eacd5a8924e79736f2fea5656c5055829d3a6b..97f8fa1b784120d29979242945291ac09024d90f 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 0000000000000000000000000000000000000000..21def963403191f6fbb8e0681d4c8f67ee7bbecf --- /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 7a4ea9db126a1c9250d9a25b73a5759ff4ec29bf..d2efa41e356e8cd86dbce45d9f12aab268c908df 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() {