/*
* Copyright (C) 2015-2017 PÂRIS Quentin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.phoenicis.javafx.controller;
import org.phoenicis.javafx.views.common.ThemeConfiguration;
import org.phoenicis.library.LibraryConfiguration;
import org.phoenicis.settings.SettingsConfiguration;
import org.phoenicis.apps.AppsConfiguration;
import org.phoenicis.containers.ContainersConfiguration;
import org.phoenicis.engines.EnginesConfiguration;
import org.phoenicis.javafx.controller.apps.AppsController;
import org.phoenicis.javafx.controller.containers.ContainersController;
import org.phoenicis.javafx.controller.engines.EnginesController;
import org.phoenicis.javafx.controller.library.LibraryController;
import org.phoenicis.javafx.controller.library.console.ConsoleController;
import org.phoenicis.javafx.controller.settings.SettingsController;
import org.phoenicis.javafx.views.ViewsConfiguration;
import org.phoenicis.scripts.ScriptsConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ControllerConfiguration {
@Value("${application.name}")
private String applicationName;
@Autowired
private ThemeConfiguration themeConfiguration;
@Autowired
private ViewsConfiguration viewsConfiguration;
@Autowired
private ScriptsConfiguration scriptsConfiguration;
@Autowired
private AppsConfiguration appsConfiguration;
@Autowired
private LibraryConfiguration libraryConfiguration;
@Autowired
private EnginesConfiguration enginesConfiguration;
@Autowired
private ContainersConfiguration containersConfiguration;
@Autowired
private SettingsConfiguration settingsConfiguration;
@Bean
public MainController mainController() {
return new MainController(applicationName, libraryController(), appsController(), enginesController(),
containersController(), settingsController(), themeConfiguration.themeManager(),
settingsConfiguration.settingsManager());
}
@Bean
public ContainersController containersController() {
return new ContainersController(viewsConfiguration.viewContainers(),
containersConfiguration.backgroundContainersManager(),
viewsConfiguration.winePrefixContainerPanelFactory(),
containersConfiguration.winePrefixContainerController(), enginesConfiguration.wineVersionsFetcher());
}
@Bean
public EnginesController enginesController() {
return new EnginesController(viewsConfiguration.viewEngines(), enginesConfiguration.wineVersionsFetcher(),
scriptsConfiguration.scriptInterpreter(), themeConfiguration.themeManager());
}
@Bean
public LibraryController libraryController() {
return new LibraryController(viewsConfiguration.viewLibrary(), consoleController(),
libraryConfiguration.libraryManager(), libraryConfiguration.shortcutRunner(),
libraryConfiguration.shortcutManager(), scriptsConfiguration.scriptInterpreter());
}
@Bean
public AppsController appsController() {
return new AppsController(viewsConfiguration.viewApps(), appsConfiguration.repositoryManager(),
scriptsConfiguration.scriptInterpreter(), themeConfiguration.themeManager());
}
@Bean
public ConsoleController consoleController() {
return new ConsoleController(viewsConfiguration.consoleTabFactory(), scriptsConfiguration.scriptInterpreter());
}
@Bean
public SettingsController settingsController() {
return new SettingsController(viewsConfiguration.viewSettings(), settingsConfiguration.settingsManager());
}
}