# HG changeset patch # User Jaroslav Tulach # Date 1213430814 -7200 # Node ID 3fb53f65db570ca009e091797059a79580c11d79 # Parent fc45e7b76ee88993e12e9a46f50e516112a7ec30 Example with registration methods is working diff -r fc45e7b76ee8 -r 3fb53f65db57 samples/componentinjection/anagram-modular/build.xml --- a/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:06:53 2008 +0200 +++ b/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:06:54 2008 +0200 @@ -8,28 +8,30 @@ + + + + + + + + + + + + + + - - - - - - - - - - - + - - - - - + + + @@ -41,43 +43,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + UTF-8 + + java + src-app-register + UTF-8 + + . UTF-8 @@ -88,6 +94,10 @@ src-gui + + + src-app-register + build.xml @@ -127,6 +137,12 @@ 1.5 + src-app-register + src-api:src-scrambler-simple:src-word-static:src-gui + build/app-register/classes + 1.5 + + src-test src-new-api:../libs/dist/junit-4.4.jar 1.5 diff -r fc45e7b76ee8 -r 3fb53f65db57 samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Launcher.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Launcher.java Sat Jun 14 10:06:54 2008 +0200 @@ -0,0 +1,32 @@ +package org.apidesign.anagram.app.register; + +import org.apidesign.anagram.api.Scrambler; +import org.apidesign.anagram.api.UI; +import org.apidesign.anagram.api.WordLibrary; + +public final class Launcher { + private static Class wordLibrary; + private static Class scrambler; + private static Class ui; + + + private Launcher() { + } + + + public static void registerWordLibrary(Class libraryClass) { + wordLibrary = libraryClass; + } + public static void registerScrambler(Class scramblerClass) { + scrambler = scramblerClass; + } + public static void registerUI(Class uiClass) { + ui = uiClass; + } + + public static UI launch() throws Exception { + WordLibrary w = wordLibrary.newInstance(); + Scrambler s = scrambler.newInstance(); + return ui.getConstructor(WordLibrary.class, Scrambler.class).newInstance(w, s); + } +} diff -r fc45e7b76ee8 -r 3fb53f65db57 samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Main.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Main.java Sat Jun 14 10:06:54 2008 +0200 @@ -0,0 +1,21 @@ +package org.apidesign.anagram.app.register; + +import org.apidesign.anagram.api.UI; +import org.apidesign.anagram.gui.AnagramsWithConstructor; +import org.apidesign.anagram.scramblersimple.SimpleScrambler; +import org.apidesign.anagram.wordstatic.StaticWordLibrary; + +public final class Main { + private Main() { } + + public static void main(String[] args) throws Exception { + Launcher.registerScrambler(SimpleScrambler.class); + Launcher.registerWordLibrary(StaticWordLibrary.class); + Launcher.registerUI(AnagramsWithConstructor.class); + + UI ui = Launcher.launch(); + ui.display(); + } + + +} diff -r fc45e7b76ee8 -r 3fb53f65db57 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java --- a/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:06:53 2008 +0200 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:06:54 2008 +0200 @@ -18,13 +18,19 @@ /** Creates new form Anagrams */ public Anagrams() { initComponents(); - initWord(); getRootPane().setDefaultButton(guessButton); } protected abstract WordLibrary getWordLibrary(); protected abstract Scrambler getScrambler(); + + @Override + public void addNotify() { + super.addNotify(); + initWord(); + } + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is diff -r fc45e7b76ee8 -r 3fb53f65db57 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java Sat Jun 14 10:06:54 2008 +0200 @@ -0,0 +1,29 @@ +package org.apidesign.anagram.gui; + +import org.apidesign.anagram.api.Scrambler; +import org.apidesign.anagram.api.WordLibrary; + +public final class AnagramsWithConstructor extends Anagrams { + + private final WordLibrary library; + private final Scrambler scrambler; + + public AnagramsWithConstructor(WordLibrary library, Scrambler scrambler) { + this.library = library; + this.scrambler = scrambler; + } + + @Override + protected WordLibrary getWordLibrary() { + return library; + } + + @Override + protected Scrambler getScrambler() { + return scrambler; + } + + public void display() { + setVisible(true); + } +}