Java源码示例:com.airhacks.afterburner.injection.Injector

示例1
static void buildDrawer(MobileApplication app, NavigationDrawer.Header header, Collection<AppView> views) {
    final NavigationDrawer drawer = app.getDrawer();
    Utils.buildDrawer(drawer, header, views);

    final Service service = Injector.instantiateModelOrService(Service.class);
    
    for (Node item : drawer.getItems()) {
        if (item instanceof NavigationDrawer.ViewItem && 
                ((NavigationDrawer.ViewItem) item).getViewName().equals(EDITION_VIEW.getId())) {
            item.disableProperty().bind(service.userProperty().isNull());
            break;
        }
    }
    
    service.userProperty().addListener((obs, ov, nv) -> avatar.setImage(getAvatarImage(service)));
    avatar.setImage(getAvatarImage(service));
}
 
示例2
@Override
public void start(Stage stage) throws Exception {

    String version = Mokka7App.class.getPackage().getImplementationVersion();

    stage.setTitle(String.format("Mokka7 client v.%s", version != null ? version : "DEV"));
    stage.setResizable(true);

    Injector.setLogger((t) -> logger.trace(t));

    Injector.setModelOrService(MonitoredS7Client.class, new MonitoredS7Client());

    SessionManager session = Injector.instantiateModelOrService(SessionManager.class);
    session.setSession(getClass().getName().toLowerCase());
    session.loadSession();

    session.bind(sceneWidthProperty, "scene.width");
    session.bind(sceneHeightProperty, "scene.height");

    MainView main = new MainView();

    final Scene scene = new Scene(main.getView(), sceneWidthProperty.get(), sceneHeightProperty.get());
    stage.setOnCloseRequest((e) -> {
        sceneWidthProperty.set(scene.getWidth());
        sceneHeightProperty.set(scene.getHeight());
        Injector.forgetAll();
        System.exit(0);
    });
    stage.setScene(scene);
    Image icon16 = new Image(getClass().getResourceAsStream("icon-16x16.png"));
    Image icon32 = new Image(getClass().getResourceAsStream("icon-32x32.png"));
    Image icon48 = new Image(getClass().getResourceAsStream("icon-48x48.png"));

    stage.getIcons().addAll(icon16, icon32, icon48);

    stage.show();

}
 
示例3
private void restart() {
  stageRef.close();
  try {
    sceneWidthProperty.set(stageRef.getScene().getWidth());
    sceneHeightProperty.set(stageRef.getScene().getHeight());
    Injector.forgetAll();
    start(new Stage());
  } catch (Exception e) {
    throw new RuntimeException("Failed to restart " + getClass().getName(), e);
  }
}
 
示例4
@BeforeClass
public static void init() {
  Injector.setLogger((t) -> logger.info(t));
  // AboutView view = new AboutView();
  // stage = new Stage(StageStyle.UNDECORATED);
  // stage.setScene(new Scene(view.getView()));
  // stage.show();
}
 
示例5
@Override
public void stop() throws Exception {
    Injector.forgetAll();
}
 
示例6
@Override
public void start(Stage stage) throws Exception {
  stageRef = stage;
  stage.titleProperty().bind(headerExpr);
  stage.setResizable(true);
  offlineImg = new Image(VncClientApp.class.getResourceAsStream("icon.png"));
  onlineImg = new Image(VncClientApp.class.getResourceAsStream("icon_green.png"));

  Injector.setLogger(logger::trace);

  VncRenderService vncService = Injector.instantiateModelOrService(VncRenderService.class);

  vncService.fullSceenProperty().addListener((l, a, b) -> Platform.runLater(() -> stage.setFullScreen(b)));
  vncService.restartProperty().addListener(l -> restart());
  vncService.connectInfoProperty().addListener((l, a, b) -> Platform.runLater(() -> headerProperty.set(b.getServerName())));
  vncService.onlineProperty().addListener((l, a, b) -> Platform.runLater(() -> {
    stage.getIcons().add(b ? onlineImg : offlineImg);
    stage.getIcons().remove(!b ? onlineImg : offlineImg);
  }));

  // update property on exit full screen by key combination
  stage.fullScreenProperty().addListener((l, a, b) -> vncService.fullSceenProperty().set(b));

  SessionContext session = Injector.instantiateModelOrService(SessionContext.class);
  session.setSession("jfxvnc.app");
  session.loadSession();

  session.bind(sceneWidthProperty, "scene.width");
  session.bind(sceneHeightProperty, "scene.height");

  MainView main = new MainView();

  final Scene scene = new Scene(main.getView(), sceneWidthProperty.get(), sceneHeightProperty.get());
  stage.setOnCloseRequest((e) -> {
    sceneWidthProperty.set(scene.getWidth());
    sceneHeightProperty.set(scene.getHeight());
    Injector.forgetAll();
    System.exit(0);
  });
  stage.setScene(scene);
  stage.getIcons().add(offlineImg);
  stage.show();
}
 
示例7
public static void end() {
  Injector.forgetAll();
  // stage.close();
}
 
示例8
public static void registerViews(MobileApplication app) {
    NavigationDrawer drawer = app.getDrawer();
    for (AppView view : REGISTRY.getViews()) {
        view.registerView(app);
        if (view.isShownInDrawer()) {
            drawer.getItems().add(view.getMenuItem());
        }
    }

    cloud = Injector.instantiateModelOrService(Cloud.class);
    cloud.authenticatedUserProperty().addListener(o ->
            drawer.setHeader(getHeader()));

    drawer.setHeader(getHeader());

    final NavigationDrawer.Item aboutItem = new NavigationDrawer.Item("About 2048FX", MaterialDesignIcon.INFO_OUTLINE.graphic());
    drawer.selectedItemProperty().addListener((obs, ov, nv) -> {
        if (aboutItem.equals(nv)) {
            PauseTransition pause = new PauseTransition(Duration.seconds(0.5));
            pause.setOnFinished(f -> new About());
            pause.play();
            drawer.setSelectedItem(GAME_VIEW.getMenuItem());
        }
    });
    drawer.getItems().add(aboutItem);

    if (Platform.isDesktop()) {
        NavigationDrawer.Item quitItem = new NavigationDrawer.Item("Quit", MaterialDesignIcon.EXIT_TO_APP.graphic());
        quitItem.selectedProperty().addListener((obs, ov, nv) -> {
            if (nv) {
                Services.get(LifecycleService.class).ifPresent(LifecycleService::shutdown);
            }
        });
        drawer.getItems().add(quitItem);
    }

    drawer.skinProperty().addListener(new InvalidationListener() {
        @Override
        public void invalidated(Observable observable) {
            ListTile versionTile = new ListTile();
            versionTile.setPrimaryGraphic(new ImageView());
            versionTile.textProperty().addAll("2048FX", "Version " + VERSION + " - " + Year.now().toString());
            HBox hBottom = new HBox(versionTile);
            hBottom.getStyleClass().add("drawer-bottom");
            HBox.setHgrow(versionTile, Priority.ALWAYS);

            ((BorderPane) drawer.getChildrenUnmodifiable().get(0)).setBottom(hBottom);

            drawer.skinProperty().removeListener(this);
        }
    });
}
 
示例9
@Override
public void postInit(Scene scene) {

    String display = Services.get(DisplayService.class)
            .map(service -> service.isTablet() ? "tablet" : "phone")
            .orElse("phone");
    scene.getStylesheets().add(GameManager.class.getResource(display + ".css").toExternalForm());

    GameModel gameModel = Injector.instantiateModelOrService(GameModel.class);
    scene.getRoot().getStyleClass().add(gameModel.getGameMode().toString().toLowerCase());
    gameModel.gameModeProperty().addListener((obs, m, m1) -> {
        scene.getRoot().getStyleClass().remove(m.toString().toLowerCase());
        scene.getRoot().getStyleClass().add(m1.toString().toLowerCase());
    });
    Stage stage = (Stage) scene.getWindow();

    if (Platform.isDesktop()) {
        Services.get(DisplayService.class)
                .ifPresent(service -> {
                    if (service.isTablet()) {
                        // tablet
                        scene.getWindow().setWidth(600);
                        scene.getWindow().setHeight(800);
                    }
                });

        stage.setTitle("2048FX");
        stage.getIcons()
                .add(new Image(GameManager.class.getResourceAsStream("Icon-60.png")));
    }

    AppViewManager.GAME_VIEW.getPresenter().ifPresent(presenter -> {
        gamePresenter = (GamePresenter) presenter;
        gamePresenter.pauseProperty().bind(pause);
        gamePresenter.stopProperty().bind(stop);
    });

    if (Platform.isDesktop() && isARMDevice()) {
        stage.setFullScreen(true);
        stage.setFullScreenExitHint("");
    }

    if (javafx.application.Platform.isSupported(ConditionalFeature.INPUT_TOUCH)) {
        scene.setCursor(Cursor.NONE);
    }
}
 
示例10
@Override
public void stop() {
    Injector.forgetAll();
}
 
示例11
@Test
public void aboutView() {

  AboutViewPresenter presenter = Injector.instantiatePresenter(AboutViewPresenter.class);
  assertNotNull(presenter);

}