package application.settings; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import application.tools.InfoTool; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Tab; import javafx.scene.input.KeyCode; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import javafx.stage.StageStyle; /** * @author GOXR3PLUS * */ public class ApplicationSettingsController extends BorderPane { /** * @author GOXR3PLUS * */ public enum SettingsTab { GENERERAL, LIBRARIES, PLAYLISTS, SHORTCUTS, XPLAYERS, ANYONE; } @FXML private Tab generalTab; @FXML private Tab playListsTab; @FXML private Tab librariesTab; @FXML private Tab shortCutsTab; @FXML private Tab xPlayersTab; @FXML private Button doneButton; //-------------------------------------------------------- /** The logger. */ private Logger logger = Logger.getLogger(getClass().getName()); /** * The Stage of the ApplicationSettings. */ private Stage window = new Stage(); private GeneralSettingsController generalSettingsController = new GeneralSettingsController(); private KeyBindingsController nativeKeyBindingsController = new KeyBindingsController(); private PlaylistsSettingsController playListsSettingsController = new PlaylistsSettingsController(); private LibrariesSettingsController librariesSettingsController = new LibrariesSettingsController(); private XPlayersSettingsController xPlayersSettingsController = new XPlayersSettingsController(); /** * Constructor. */ public ApplicationSettingsController() { // ------------------------------------FXMLLOADER------------------------------------- FXMLLoader loader = new FXMLLoader(getClass().getResource(InfoTool.FXMLS + "ApplicationSettingsController.fxml")); loader.setController(this); loader.setRoot(this); try { loader.load(); } catch (IOException ex) { logger.log(Level.SEVERE, "", ex); } window.setTitle("Application Settings"); window.initStyle(StageStyle.UTILITY); window.setScene(new Scene(this)); window.getScene().setOnKeyReleased(k -> { if (k.getCode() == KeyCode.ESCAPE) window.close(); }); } /** * Shows the Window. * * @param settingsTab * The default tab you want to be selected when the window is shown */ public void showWindow(SettingsTab settingsTab) { if (settingsTab == SettingsTab.GENERERAL) { librariesTab.getTabPane().getSelectionModel().select(0); } else if (settingsTab == SettingsTab.PLAYLISTS) { librariesTab.getTabPane().getSelectionModel().select(1); } else if (settingsTab == SettingsTab.LIBRARIES) { librariesTab.getTabPane().getSelectionModel().select(2); } else if (settingsTab == SettingsTab.SHORTCUTS) { librariesTab.getTabPane().getSelectionModel().select(3); } else if (settingsTab == SettingsTab.XPLAYERS) { librariesTab.getTabPane().getSelectionModel().select(4); } window.show(); } /** * Hides the Window. */ public void hideWindow() { window.hide(); } /** * @return the window */ public Stage getWindow() { return window; } /** * Called as soon as .fxml is initialized */ @FXML private void initialize() { generalTab.setContent(generalSettingsController); librariesTab.setContent(librariesSettingsController); playListsTab.setContent(playListsSettingsController); shortCutsTab.setContent(nativeKeyBindingsController); xPlayersTab.setContent(xPlayersSettingsController); //doneButton doneButton.setOnAction(a -> hideWindow()); } /** * @return the playListsSettingsController */ public PlaylistsSettingsController getPlayListsSettingsController() { return playListsSettingsController; } /** * @return the nativeKeyBindings */ public KeyBindingsController getNativeKeyBindings() { return nativeKeyBindingsController; } /** * @return the librariesSettingsController */ public LibrariesSettingsController getLibrariesSettingsController() { return librariesSettingsController; } /** * @return the generalSettingsController */ public GeneralSettingsController getGeneralSettingsController() { return generalSettingsController; } /** * @return the xPlayersSettingsController */ public XPlayersSettingsController getxPlayersSettingsController() { return xPlayersSettingsController; } }