package com.faforever.client.config; import com.faforever.client.achievements.AchievementItemController; import com.faforever.client.achievements.AchievementUnlockedNotifier; import com.faforever.client.audio.AudioClipPlayer; import com.faforever.client.audio.AudioClipPlayerImpl; import com.faforever.client.audio.AudioController; import com.faforever.client.audio.AudioControllerImpl; import com.faforever.client.cast.CastsController; import com.faforever.client.chat.AutoCompletionHelper; import com.faforever.client.chat.ChannelTabController; import com.faforever.client.chat.ChatController; import com.faforever.client.chat.ChatUserContextMenuController; import com.faforever.client.chat.ChatUserItemController; import com.faforever.client.chat.CountryFlagService; import com.faforever.client.chat.CountryFlagServiceImpl; import com.faforever.client.chat.FilterUserController; import com.faforever.client.chat.GameStatusTooltipController; import com.faforever.client.chat.PrivateChatTabController; import com.faforever.client.chat.UrlPreviewResolver; import com.faforever.client.chat.UrlPreviewResolverImpl; import com.faforever.client.chat.UserInfoWindowController; import com.faforever.client.chat.avatar.AvatarService; import com.faforever.client.chat.avatar.AvatarServiceImpl; import com.faforever.client.fa.OnGameFullNotifier; import com.faforever.client.fx.DialogFactory; import com.faforever.client.fx.DialogFactoryImpl; import com.faforever.client.fx.FxmlLoader; import com.faforever.client.fx.FxmlLoaderImpl; import com.faforever.client.fx.WindowController; import com.faforever.client.game.CreateGameController; import com.faforever.client.game.EnterPasswordController; import com.faforever.client.game.GameTileController; import com.faforever.client.game.GameTooltipController; import com.faforever.client.game.GamesController; import com.faforever.client.game.GamesTableController; import com.faforever.client.game.GamesTilesContainerController; import com.faforever.client.game.JoinGameHelper; import com.faforever.client.game.PlayerCardTooltipController; import com.faforever.client.game.TeamCardController; import com.faforever.client.hub.CommunityHubController; import com.faforever.client.hub.ConcurrentUsersController; import com.faforever.client.hub.DonationWallController; import com.faforever.client.hub.LastCastController; import com.faforever.client.hub.LastNewsController; import com.faforever.client.hub.MapOfTheDayController; import com.faforever.client.hub.MostActivePlayersController; import com.faforever.client.hub.RecentForumPostsController; import com.faforever.client.hub.TopPlayersController; import com.faforever.client.hub.UpcomingEventsController; import com.faforever.client.leaderboard.LeaderboardController; import com.faforever.client.login.LoginController; import com.faforever.client.main.MainController; import com.faforever.client.main.UserMenuController; import com.faforever.client.map.MapDetailController; import com.faforever.client.map.MapTileController; import com.faforever.client.map.MapUploadController; import com.faforever.client.map.MapVaultController; import com.faforever.client.mod.ModDetailController; import com.faforever.client.mod.ModTileController; import com.faforever.client.mod.ModUploadController; import com.faforever.client.mod.ModVaultController; import com.faforever.client.news.NewsController; import com.faforever.client.news.NewsListItemController; import com.faforever.client.notification.ImmediateNotificationController; import com.faforever.client.notification.PersistentNotificationController; import com.faforever.client.notification.PersistentNotificationsController; import com.faforever.client.notification.TransientNotificationController; import com.faforever.client.notification.TransientNotificationsController; import com.faforever.client.player.FriendJoinedGameNotifier; import com.faforever.client.preferences.ui.SettingsController; import com.faforever.client.rankedmatch.Ranked1v1Controller; import com.faforever.client.replay.ReplayVaultController; import com.faforever.client.units.UnitsController; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import javax.annotation.Resource; @org.springframework.context.annotation.Configuration @Import(BaseConfig.class) public class UiConfig { @Resource Environment environment; @Resource BaseConfig baseConfig; @Bean OnGameFullNotifier onGameFullFaWindowFlasher() { return new OnGameFullNotifier(); } @Bean FriendJoinedGameNotifier friendJoinedGameNotifier() { return new FriendJoinedGameNotifier(); } @Bean AchievementUnlockedNotifier achievementUnlockedNotifier() { return new AchievementUnlockedNotifier(); } // TODO this seems obsolete, remove it @Bean DialogFactory dialogFactory() { return new DialogFactoryImpl(); } @Bean LoginController loginController() { return loadController("login.fxml"); } private <T> T loadController(String fxml) { return fxmlLoader().loadAndGetController(fxml); } @Bean FxmlLoader fxmlLoader() { return new FxmlLoaderImpl(); } @Bean UserMenuController userMenuController() { return loadController("user_menu.fxml"); } @Bean MainController mainController() { return loadController("main.fxml"); } @Bean NewsController newsController() { return loadController("news.fxml"); } @Bean GamesController gamesController() { return loadController("games.fxml"); } @Bean Ranked1v1Controller ranked1v1Controller() { return loadController("ranked_1v1.fxml"); } @Bean MapDetailController mapDetailController() { return loadController("map_detail.fxml"); } @Bean ChatController chatController() { return loadController("chat.fxml"); } @Bean UnitsController unitsController() { return loadController("units.fxml"); } @Bean LeaderboardController leaderboardController() { return loadController("leaderboard.fxml"); } @Bean CommunityHubController communityHubController() { return loadController("community_hub.fxml"); } @Bean ConcurrentUsersController concurrentUsersController() { return loadController("concurrent_users.fxml"); } @Bean LastCastController lastCastController() { return loadController("last_cast.fxml"); } @Bean UpcomingEventsController upcomingEventController() { return loadController("upcoming_events.fxml"); } @Bean LastNewsController lastNewsController() { return loadController("last_news.fxml"); } @Bean MapOfTheDayController mapOfTheDayController() { return loadController("map_of_the_day.fxml"); } @Bean TopPlayersController topPlayersController() { return loadController("top_players.fxml"); } @Bean DonationWallController donationWallController() { return loadController("donation_wall.fxml"); } @Bean RecentForumPostsController recentForumPostsController() { return loadController("recent_forum_posts.fxml"); } @Bean MostActivePlayersController mostActivePlayersController() { return loadController("most_active_players.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) WindowController windowController() { return loadController("window.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) FilterUserController filterUserController() { return loadController("filter_user.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) ModTileController modTileController() { return loadController("mod_tile.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) MapTileController mapTileController() { return loadController("map_tile.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) GameStatusTooltipController gameStatusContainerTooltipController() { return loadController("game_status_tooltip.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) GamesTableController gameTableController() { return loadController("games_table.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) ImmediateNotificationController immediateNotificationController() { return loadController("immediate_notification.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) PlayerCardTooltipController playerCardTooltipController() { return loadController("player_card_tooltip.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) TeamCardController teamCardController() { return loadController("team_card.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) GameTooltipController gameContainerTooltipController() { return loadController("game_tooltip.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) GamesTilesContainerController gamesTiledController() { return loadController("games_tiles_container.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) UserInfoWindowController userInfoWindowController() { return loadController("user_info_window.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) GameTileController gameCardController() { return loadController("game_tile.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) AchievementItemController achievementItemController() { return loadController("achievement_item.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) NewsListItemController newsListItemController() { return loadController("news_list_item.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) PersistentNotificationController persistentNotificationController() { return loadController("persistent_notification.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) ChatUserContextMenuController chatUserContextMenuController() { return loadController("chat_user_context_menu.fxml"); } @Bean PersistentNotificationsController notificationsController() { return loadController("persistent_notifications.fxml"); } @Bean CreateGameController createGameController() { return loadController("create_game.fxml"); } @Bean EnterPasswordController enterPasswordController() { return loadController("enter_password.fxml"); } @Bean ReplayVaultController replayVaultController() { return loadController("replay_vault.fxml"); } @Bean ModVaultController modVaultController() { return loadController("mod_vault.fxml"); } @Bean ModDetailController modDetailController() { return loadController("mod_detail.fxml"); } @Bean MapVaultController mapVaultController() { return loadController("map_vault.fxml"); } @Bean CastsController castsController() { return loadController("casts.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) ChannelTabController channelTab() { return loadController("channel_tab.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) PrivateChatTabController privateChatTab() { return loadController("private_chat_tab.fxml"); } @Bean AvatarService avatarService() { return new AvatarServiceImpl(); } @Bean CountryFlagService countryFlagService() { return new CountryFlagServiceImpl(); } @Bean SettingsController settingsWindowController() { return loadController("settings/settings.fxml"); } @Bean AudioClipPlayer audioClipPlayer() { return new AudioClipPlayerImpl(); } @Bean AudioController soundService() { return new AudioControllerImpl(); } @Bean UrlPreviewResolver urlPreviewResolver() { return new UrlPreviewResolverImpl(); } @Bean TransientNotificationsController transientNotificationsController() { return loadController("transient_notifications.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) TransientNotificationController transientNotificationController() { return loadController("transient_notification.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) ChatUserItemController chatUserItemController() { return loadController("chat_user_item.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) ModUploadController uploadModController() { return loadController("mod_upload.fxml"); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) MapUploadController uploadMapController() { return loadController("map_upload.fxml"); } @Bean JoinGameHelper joinGameHelper() { return new JoinGameHelper(); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) AutoCompletionHelper autoCompletitionHelper() { return new AutoCompletionHelper(); } }