samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Launcher.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:07:30 +0200
changeset 233 15d31c98a129
parent 219 3fb53f65db57
permissions -rw-r--r--
Making the examples more appropriate for the book
jtulach@219
     1
package org.apidesign.anagram.app.register;
jtulach@219
     2
jtulach@219
     3
import org.apidesign.anagram.api.Scrambler;
jtulach@219
     4
import org.apidesign.anagram.api.UI;
jtulach@219
     5
import org.apidesign.anagram.api.WordLibrary;
jtulach@219
     6
jtulach@233
     7
// BEGIN: anagram.programatic.register
jtulach@219
     8
public final class Launcher {
jtulach@219
     9
    private static Class<? extends WordLibrary> wordLibrary;
jtulach@219
    10
    private static Class<? extends Scrambler> scrambler;
jtulach@219
    11
    private static Class<? extends UI> ui;
jtulach@219
    12
    
jtulach@219
    13
    
jtulach@219
    14
    private Launcher() {
jtulach@219
    15
    }
jtulach@219
    16
jtulach@219
    17
    
jtulach@233
    18
    public static void registerWordLibrary(
jtulach@233
    19
        Class<? extends WordLibrary> libraryClass
jtulach@233
    20
    ) {
jtulach@219
    21
        wordLibrary = libraryClass;
jtulach@219
    22
    }
jtulach@233
    23
    public static void registerScrambler(
jtulach@233
    24
        Class<? extends Scrambler> scramblerClass
jtulach@233
    25
    ) {
jtulach@219
    26
        scrambler = scramblerClass;
jtulach@219
    27
    }
jtulach@219
    28
    public static void registerUI(Class<? extends UI> uiClass) {
jtulach@219
    29
        ui = uiClass;
jtulach@219
    30
    }
jtulach@219
    31
    
jtulach@219
    32
    public static UI launch() throws Exception {
jtulach@219
    33
        WordLibrary w = wordLibrary.newInstance();
jtulach@219
    34
        Scrambler s = scrambler.newInstance();
jtulach@233
    35
        return ui.getConstructor(
jtulach@233
    36
            WordLibrary.class, Scrambler.class
jtulach@233
    37
        ).newInstance(w, s);
jtulach@219
    38
    }
jtulach@219
    39
}
jtulach@233
    40
// END: anagram.programatic.register