From 8ec7653a5e00aeb76d1e08690bcf071c8f827472 Mon Sep 17 00:00:00 2001 From: Jannik Date: Thu, 29 Mar 2018 11:26:20 +0200 Subject: [PATCH] added to option to select a local or streaming source at the first start --- .../uiElements/JFXDirStrmCancelDialog.java | 194 ++++++++++++++++++ .../com/cemu_UI/uiElements/JFXInfoDialog.java | 66 +++++- .../uiElements/JFXOkayCancelDialog.java | 126 ++++++++---- .../uiElements/JFXTextAreaInfoDialog.java | 65 +++++- .../HomeFlix/application/Main.java | 87 ++++++-- .../application/MainWindowController.java | 11 +- .../locals/HomeFlix-Local_de_DE.properties | 5 +- .../locals/HomeFlix-Local_en_US.properties | 5 +- 8 files changed, 483 insertions(+), 76 deletions(-) create mode 100644 src/main/java/com/cemu_UI/uiElements/JFXDirStrmCancelDialog.java diff --git a/src/main/java/com/cemu_UI/uiElements/JFXDirStrmCancelDialog.java b/src/main/java/com/cemu_UI/uiElements/JFXDirStrmCancelDialog.java new file mode 100644 index 0000000..71ec0ee --- /dev/null +++ b/src/main/java/com/cemu_UI/uiElements/JFXDirStrmCancelDialog.java @@ -0,0 +1,194 @@ +package com.cemu_UI.uiElements; + +import java.util.ResourceBundle; + +import com.jfoenix.controls.JFXButton; +import com.jfoenix.controls.JFXDialog; +import com.jfoenix.controls.JFXDialogLayout; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; +import javafx.scene.layout.StackPane; +import javafx.scene.text.Text; + +public class JFXDirStrmCancelDialog { + private String headingText; + private String bodyText; + private String dialogBtnStyle; + private String btn1Text; + private String btn2Text; + private String cancelText; + private int dialogWidth; + private int dialogHeight; + private EventHandler btn1Action; + private EventHandler btn2Action; + private Pane pane; + + /** + * Creates a new JFoenix Dialog to show some information with okay and cancel + * option + * + * @param headingText Heading Text, just the heading + * @param bodyText body Text, all other text belongs here + * @param dialogBtnStyle Style of the okay button + * @param dialogWidth dialog width + * @param dialogHeight dialog height + * @param btn1Action action which is performed if btn1 is clicked + * @param btn2Action action which is performed if btn2 is clicked + * @param cancelAction action which is performed if the cancel button is clicked + * @param pane pane to which the dialog belongs + */ + public JFXDirStrmCancelDialog(String headingText, String bodyText, String dialogBtnStyle, int dialogWidth, + int dialogHeight, EventHandler btn1Action, EventHandler btn2Action, + Pane pane, ResourceBundle bundle) { + setHeadingText(headingText); + setBodyText(bodyText); + setDialogBtnStyle(dialogBtnStyle); + setDialogWidth(dialogWidth); + setDialogHeight(dialogHeight); + setBtn1Action(btn1Action); + setBtn2Action(btn2Action); + setPane(pane); + + btn1Text = bundle.getString("addDirectory"); + btn2Text = bundle.getString("addStreamSource"); + cancelText = bundle.getString("cancelBtnText"); + } + + public JFXDirStrmCancelDialog() { + // Auto-generated constructor stub + } + + public void show() { + JFXDialogLayout content = new JFXDialogLayout(); + content.setHeading(new Text(headingText)); + content.setBody(new Text(bodyText)); + StackPane stackPane = new StackPane(); + stackPane.autosize(); + JFXDialog dialog = new JFXDialog(stackPane, content, JFXDialog.DialogTransition.LEFT, true); + + JFXButton btn1 = new JFXButton(btn1Text); + btn1.addEventHandler(ActionEvent.ACTION, (e) -> { + dialog.close(); + }); + btn1.addEventHandler(ActionEvent.ACTION, btn1Action); + btn1.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); + btn1.setPrefHeight(32); + btn1.setStyle(dialogBtnStyle); + + JFXButton btn2 = new JFXButton(btn2Text); + btn2.addEventHandler(ActionEvent.ACTION, (e) -> { + dialog.close(); + }); + btn2.addEventHandler(ActionEvent.ACTION, btn2Action); + btn2.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); + btn2.setPrefHeight(32); + btn2.setStyle(dialogBtnStyle); + + JFXButton cancelBtn = new JFXButton(cancelText); + cancelBtn.addEventHandler(ActionEvent.ACTION, (e) -> { + dialog.close(); + }); + cancelBtn.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); + cancelBtn.setPrefHeight(32); + cancelBtn.setStyle(dialogBtnStyle); + + content.setActions(cancelBtn, btn1, btn2); + content.setPrefSize(dialogWidth, dialogHeight); + pane.getChildren().add(stackPane); + AnchorPane.setTopAnchor(stackPane, (pane.getHeight() - content.getPrefHeight()) / 2); + AnchorPane.setLeftAnchor(stackPane, (pane.getWidth() - content.getPrefWidth()) / 2); + dialog.show(); + } + + public String getHeadingText() { + return headingText; + } + + public void setHeadingText(String headingText) { + this.headingText = headingText; + } + + public String getBodyText() { + return bodyText; + } + + public void setBodyText(String bodyText) { + this.bodyText = bodyText; + } + + public String getDialogBtnStyle() { + return dialogBtnStyle; + } + + public void setDialogBtnStyle(String dialogBtnStyle) { + this.dialogBtnStyle = dialogBtnStyle; + } + + public String getBtn1Text() { + return btn1Text; + } + + public void setBtn1Text(String btn1Text) { + this.btn1Text = btn1Text; + } + + public String getBtn2Text() { + return btn2Text; + } + + public void setBtn2Text(String btn2Text) { + this.btn2Text = btn2Text; + } + + public String getCancelText() { + return cancelText; + } + + public void setCancelText(String cancelText) { + this.cancelText = cancelText; + } + + public int getDialogWidth() { + return dialogWidth; + } + + public void setDialogWidth(int dialogWidth) { + this.dialogWidth = dialogWidth; + } + + public int getDialogHeight() { + return dialogHeight; + } + + public void setDialogHeight(int dialogHeight) { + this.dialogHeight = dialogHeight; + } + + public EventHandler getBtn1Action() { + return btn1Action; + } + + public void setBtn1Action(EventHandler btn1Action) { + this.btn1Action = btn1Action; + } + + public EventHandler getBtn2Action() { + return btn2Action; + } + + public void setBtn2Action(EventHandler btn2Action) { + this.btn2Action = btn2Action; + } + + public Pane getPane() { + return pane; + } + + public void setPane(Pane pane) { + this.pane = pane; + } + +} diff --git a/src/main/java/com/cemu_UI/uiElements/JFXInfoDialog.java b/src/main/java/com/cemu_UI/uiElements/JFXInfoDialog.java index 9c2b710..785630a 100644 --- a/src/main/java/com/cemu_UI/uiElements/JFXInfoDialog.java +++ b/src/main/java/com/cemu_UI/uiElements/JFXInfoDialog.java @@ -1,7 +1,7 @@ /** * cemu_UI * - * Copyright 2017 <@Seil0> + * Copyright 2017-2018 <@Seil0> * * 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 @@ -43,12 +43,12 @@ public class JFXInfoDialog { /** * Creates a new JFoenix Dialog to show some information - * @param headingText Heading Text, just the heading - * @param bodyText body Text, all other text belongs here - * @param dialogBtnStyle Style of the okay button - * @param dialogWidth dialog width - * @param dialogHeight dialog height - * @param pane pane to which the dialog belongs + * @param headingText Heading Text, just the heading + * @param bodyText body Text, all other text belongs here + * @param dialogBtnStyle Style of the okay button + * @param dialogWidth dialog width + * @param dialogHeight dialog height + * @param pane pane to which the dialog belongs */ public JFXInfoDialog(String headingText, String bodyText, String dialogBtnStyle, int dialogWidth, int dialogHeight, Pane pane) { this.headingText = headingText; @@ -58,6 +58,10 @@ public class JFXInfoDialog { this.dialogHeight = dialogHeight; this.pane = pane; } + + public JFXInfoDialog() { + // Auto-generated constructor stub + } public void show() { JFXDialogLayout content = new JFXDialogLayout(); @@ -83,4 +87,52 @@ public class JFXInfoDialog { AnchorPane.setLeftAnchor(stackPane, (pane.getWidth() - content.getPrefWidth()) / 2); dialog.show(); } + + public String getHeadingText() { + return headingText; + } + + public void setHeadingText(String headingText) { + this.headingText = headingText; + } + + public String getBodyText() { + return bodyText; + } + + public void setBodyText(String bodyText) { + this.bodyText = bodyText; + } + + public String getDialogBtnStyle() { + return dialogBtnStyle; + } + + public void setDialogBtnStyle(String dialogBtnStyle) { + this.dialogBtnStyle = dialogBtnStyle; + } + + public int getDialogWidth() { + return dialogWidth; + } + + public void setDialogWidth(int dialogWidth) { + this.dialogWidth = dialogWidth; + } + + public int getDialogHeight() { + return dialogHeight; + } + + public void setDialogHeight(int dialogHeight) { + this.dialogHeight = dialogHeight; + } + + public Pane getPane() { + return pane; + } + + public void setPane(Pane pane) { + this.pane = pane; + } } diff --git a/src/main/java/com/cemu_UI/uiElements/JFXOkayCancelDialog.java b/src/main/java/com/cemu_UI/uiElements/JFXOkayCancelDialog.java index 5dd4d1a..974fc3d 100644 --- a/src/main/java/com/cemu_UI/uiElements/JFXOkayCancelDialog.java +++ b/src/main/java/com/cemu_UI/uiElements/JFXOkayCancelDialog.java @@ -1,7 +1,7 @@ /** * cemu_UI * - * Copyright 2017 <@Seil0> + * Copyright 2017-2018 <@Seil0> * * 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 @@ -19,7 +19,6 @@ * MA 02110-1301, USA. */ - package com.cemu_UI.uiElements; import java.util.ResourceBundle; @@ -50,14 +49,14 @@ public class JFXOkayCancelDialog { /** * Creates a new JFoenix Dialog to show some information with okay and cancel option - * @param headingText Heading Text, just the heading - * @param bodyText body Text, all other text belongs here - * @param dialogBtnStyle Style of the okay button - * @param dialogWidth dialog width - * @param dialogHeight dialog height - * @param okayAction action which is performed if the okay button is clicked - * @param cancelAction action which is performed if the cancel button is clicked - * @param pane pane to which the dialog belongs + * @param headingText Heading Text, just the heading + * @param bodyText body Text, all other text belongs here + * @param dialogBtnStyle Style of the okay button + * @param dialogWidth dialog width + * @param dialogHeight dialog height + * @param okayAction action which is performed if the okay button is clicked + * @param cancelAction action which is performed if the cancel button is clicked + * @param pane pane to which the dialog belongs */ public JFXOkayCancelDialog(String headingText, String bodyText, String dialogBtnStyle, int dialogWidth, int dialogHeight, EventHandler okayAction, EventHandler cancelAction, Pane pane, @@ -74,36 +73,63 @@ public class JFXOkayCancelDialog { cancelText = bundle.getString("cancelBtnText"); } + public JFXOkayCancelDialog() { + // Auto-generated constructor stub + } + public void show() { - JFXDialogLayout content = new JFXDialogLayout(); - content.setHeading(new Text(headingText)); - content.setBody(new Text(bodyText)); - StackPane stackPane = new StackPane(); - stackPane.autosize(); - JFXDialog dialog = new JFXDialog(stackPane, content, JFXDialog.DialogTransition.LEFT, true); - JFXButton okayBtn = new JFXButton(okayText); - okayBtn.addEventHandler(ActionEvent.ACTION, (e)-> { - dialog.close(); - }); - okayBtn.addEventHandler(ActionEvent.ACTION, okayAction); - okayBtn.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); - okayBtn.setPrefHeight(32); - okayBtn.setStyle(dialogBtnStyle); - JFXButton cancelBtn = new JFXButton(cancelText); - cancelBtn.addEventHandler(ActionEvent.ACTION, (e)-> { - dialog.close(); - }); - cancelBtn.addEventHandler(ActionEvent.ACTION, cancelAction); - cancelBtn.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); - cancelBtn.setPrefHeight(32); - cancelBtn.setStyle(dialogBtnStyle); - content.setActions(cancelBtn, okayBtn); - content.setPrefSize(dialogWidth, dialogHeight); - pane.getChildren().add(stackPane); - AnchorPane.setTopAnchor(stackPane, (pane.getHeight()-content.getPrefHeight())/2); - AnchorPane.setLeftAnchor(stackPane, (pane.getWidth()-content.getPrefWidth())/2); - dialog.show(); + content.setHeading(new Text(headingText)); + content.setBody(new Text(bodyText)); + StackPane stackPane = new StackPane(); + stackPane.autosize(); + JFXDialog dialog = new JFXDialog(stackPane, content, JFXDialog.DialogTransition.LEFT, true); + JFXButton okayBtn = new JFXButton(okayText); + okayBtn.addEventHandler(ActionEvent.ACTION, (e) -> { + dialog.close(); + }); + okayBtn.addEventHandler(ActionEvent.ACTION, okayAction); + okayBtn.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); + okayBtn.setPrefHeight(32); + okayBtn.setStyle(dialogBtnStyle); + JFXButton cancelBtn = new JFXButton(cancelText); + cancelBtn.addEventHandler(ActionEvent.ACTION, (e) -> { + dialog.close(); + }); + cancelBtn.addEventHandler(ActionEvent.ACTION, cancelAction); + cancelBtn.setButtonType(com.jfoenix.controls.JFXButton.ButtonType.RAISED); + cancelBtn.setPrefHeight(32); + cancelBtn.setStyle(dialogBtnStyle); + content.setActions(cancelBtn, okayBtn); + content.setPrefSize(dialogWidth, dialogHeight); + pane.getChildren().add(stackPane); + AnchorPane.setTopAnchor(stackPane, (pane.getHeight() - content.getPrefHeight()) / 2); + AnchorPane.setLeftAnchor(stackPane, (pane.getWidth() - content.getPrefWidth()) / 2); + dialog.show(); + } + + public String getHeadingText() { + return headingText; + } + + public void setHeadingText(String headingText) { + this.headingText = headingText; + } + + public String getBodyText() { + return bodyText; + } + + public void setBodyText(String bodyText) { + this.bodyText = bodyText; + } + + public String getDialogBtnStyle() { + return dialogBtnStyle; + } + + public void setDialogBtnStyle(String dialogBtnStyle) { + this.dialogBtnStyle = dialogBtnStyle; } public String getOkayText() { @@ -122,6 +148,22 @@ public class JFXOkayCancelDialog { this.cancelText = cancelText; } + public int getDialogWidth() { + return dialogWidth; + } + + public void setDialogWidth(int dialogWidth) { + this.dialogWidth = dialogWidth; + } + + public int getDialogHeight() { + return dialogHeight; + } + + public void setDialogHeight(int dialogHeight) { + this.dialogHeight = dialogHeight; + } + public EventHandler getOkayAction() { return okayAction; } @@ -138,5 +180,13 @@ public class JFXOkayCancelDialog { this.cancelAction = cancelAction; } + public Pane getPane() { + return pane; + } + + public void setPane(Pane pane) { + this.pane = pane; + } + } diff --git a/src/main/java/com/cemu_UI/uiElements/JFXTextAreaInfoDialog.java b/src/main/java/com/cemu_UI/uiElements/JFXTextAreaInfoDialog.java index fd8ff2f..ea60f8c 100644 --- a/src/main/java/com/cemu_UI/uiElements/JFXTextAreaInfoDialog.java +++ b/src/main/java/com/cemu_UI/uiElements/JFXTextAreaInfoDialog.java @@ -1,7 +1,7 @@ /** * cemu_UI * - * Copyright 2017 <@Seil0> + * Copyright 2017-2018 <@Seil0> * * 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 @@ -45,12 +45,12 @@ public class JFXTextAreaInfoDialog { /** * Creates a new JFoenix Dialog to show some information - * @param headingText Heading Text, just the heading - * @param bodyText body Text, all other text belongs here + * @param headingText Heading Text, just the heading + * @param bodyText body Text, all other text belongs here * @param dialogBtnStyle Style of the okay button - * @param dialogWidth dialog width - * @param dialogHeight dialog height - * @param pane pane to which the dialog belongs + * @param dialogWidth dialog width + * @param dialogHeight dialog height + * @param pane pane to which the dialog belongs */ public JFXTextAreaInfoDialog(String headingText, String bodyText, String dialogBtnStyle, int dialogWidth, int dialogHeight, Pane pane) { this.headingText = headingText; @@ -60,6 +60,10 @@ public class JFXTextAreaInfoDialog { this.dialogHeight = dialogHeight; this.pane = pane; } + + public JFXTextAreaInfoDialog() { + // Auto-generated constructor stub + } public void show() { textArea = new JFXTextArea(bodyText); @@ -88,6 +92,46 @@ public class JFXTextAreaInfoDialog { dialog.show(); } + public String getHeadingText() { + return headingText; + } + + public void setHeadingText(String headingText) { + this.headingText = headingText; + } + + public String getBodyText() { + return bodyText; + } + + public void setBodyText(String bodyText) { + this.bodyText = bodyText; + } + + public String getDialogBtnStyle() { + return dialogBtnStyle; + } + + public void setDialogBtnStyle(String dialogBtnStyle) { + this.dialogBtnStyle = dialogBtnStyle; + } + + public int getDialogWidth() { + return dialogWidth; + } + + public void setDialogWidth(int dialogWidth) { + this.dialogWidth = dialogWidth; + } + + public int getDialogHeight() { + return dialogHeight; + } + + public void setDialogHeight(int dialogHeight) { + this.dialogHeight = dialogHeight; + } + public JFXTextArea getTextArea() { return textArea; } @@ -95,4 +139,13 @@ public class JFXTextAreaInfoDialog { public void setTextArea(JFXTextArea textArea) { this.textArea = textArea; } + + public Pane getPane() { + return pane; + } + + public void setPane(Pane pane) { + this.pane = pane; + } + } diff --git a/src/main/java/kellerkinder/HomeFlix/application/Main.java b/src/main/java/kellerkinder/HomeFlix/application/Main.java index ae797af..ceb0877 100644 --- a/src/main/java/kellerkinder/HomeFlix/application/Main.java +++ b/src/main/java/kellerkinder/HomeFlix/application/Main.java @@ -36,10 +36,12 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.ButtonBar.ButtonData; import javafx.scene.control.ButtonType; import javafx.scene.image.Image; import javafx.scene.layout.AnchorPane; import javafx.stage.DirectoryChooser; +import javafx.stage.FileChooser; import javafx.stage.Stage; public class Main extends Application { @@ -61,7 +63,6 @@ public class Main extends Application { private File configFile; private File posterCache; - private String path; private String FONT_FAMILY = "System"; private String local = System.getProperty("user.language")+"_"+System.getProperty("user.country"); private double FONT_SIZE = 17; @@ -105,8 +106,8 @@ public class Main extends Application { // startup checks if (!configFile.exists()) { - directory.mkdir(); - mainWindowController.addSource(firstStart(), "local"); + directory.mkdir(); + getFirstSource(); mainWindowController.setColor("ee3523"); mainWindowController.setSize(FONT_SIZE); mainWindowController.setAutoUpdate(false); @@ -132,8 +133,10 @@ public class Main extends Application { } } - // Method for first Start - private String firstStart(){ + /** TODO add option to add streaming as first source + * when there i no config.xml we need to get the path for the first source from the user + */ + private void getFirstSource(){ switch (System.getProperty("user.language") + "_" + System.getProperty("user.country")) { case "en_US": bundle = ResourceBundle.getBundle("locals.HomeFlix-Local", Locale.US); // us_english @@ -146,26 +149,78 @@ public class Main extends Application { break; } +// // directory action +// EventHandler btn1Action = new EventHandler() { +// @Override +// public void handle(ActionEvent event) { +// DirectoryChooser directoryChooser = new DirectoryChooser(); +// directoryChooser.setTitle(bundle.getString("addDirectory")); +// File selectedFolder = directoryChooser.showDialog(primaryStage); +// if (selectedFolder != null && selectedFolder.exists()) { +// mainWindowController.addSource(selectedFolder.getPath(), "local"); +// } else { +// LOGGER.error("The selected folder dosen't exist!"); +// } +// } +// }; +// +// // streaming action +// EventHandler btn2Action = new EventHandler() { +// @Override +// public void handle(ActionEvent event) { +// FileChooser fileChooser = new FileChooser(); +// fileChooser.setTitle("addStreamSource"); +// File selectedFile = fileChooser.showOpenDialog(getPrimaryStage()); +// if (selectedFile != null && selectedFile.exists()) { +// mainWindowController.addSource(selectedFile.getPath(), "stream"); +// } else { +// LOGGER.error("The selected file dosen't exist!"); +// } +// } +// }; +// +// JFXDirStrmCancelDialog selectFirstSource = new JFXDirStrmCancelDialog(bundle.getString("addSourceHeader"), +// bundle.getString("addSourceBody"), "", 200, 100, btn1Action, btn2Action, pane, bundle); +// selectFirstSource.show(); + + Alert alert = new Alert(AlertType.CONFIRMATION); //new alert with DirectoryChooser alert.setTitle("Project HomeFlix"); - alert.setHeaderText(bundle.getString("firstStartHeader")); - alert.setContentText(bundle.getString("firstStartContent")); + alert.setHeaderText(bundle.getString("addSourceHeader")); + alert.setContentText(bundle.getString("addSourceBody")); alert.setResizable(true); + + ButtonType buttonDirectory = new ButtonType(bundle.getString("addDirectory")); + ButtonType buttonStreaming = new ButtonType(bundle.getString("addStreamSource")); + ButtonType buttonCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE); + + alert.getButtonTypes().setAll(buttonDirectory, buttonStreaming, buttonCancel); Optional result = alert.showAndWait(); - if (result.get() == ButtonType.OK){ + if (result.get() == buttonDirectory) { DirectoryChooser directoryChooser = new DirectoryChooser(); - File selectedDirectory = - directoryChooser.showDialog(primaryStage); - path = selectedDirectory.getAbsolutePath(); - + directoryChooser.setTitle(bundle.getString("addDirectory")); + File selectedFolder = directoryChooser.showDialog(primaryStage); + if (selectedFolder != null && selectedFolder.exists()) { + mainWindowController.addSource(selectedFolder.getPath(), "local"); + } else { + LOGGER.error("The selected folder dosen't exist!"); + System.exit(1); + } + } else if (result.get() == buttonStreaming) { + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("addStreamSource"); + File selectedFile = fileChooser.showOpenDialog(getPrimaryStage()); + if (selectedFile != null && selectedFile.exists()) { + mainWindowController.addSource(selectedFile.getPath(), "stream"); + } else { + LOGGER.error("The selected file dosen't exist!"); + System.exit(1); + } } else { - LOGGER.warn("No directory selected!"); + LOGGER.warn("No source selected!"); System.exit(1); } - - return path; - } public static void main(String[] args) { diff --git a/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java b/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java index 6e152e3..83dc315 100644 --- a/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java +++ b/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java @@ -267,7 +267,6 @@ public class MainWindowController { private ImageView skip_next_black = new ImageView(new Image("icons/ic_skip_next_black_18dp_1x.png")); private ImageView play_arrow_white = new ImageView(new Image("icons/ic_play_arrow_white_18dp_1x.png")); private ImageView play_arrow_black = new ImageView(new Image("icons/ic_play_arrow_black_18dp_1x.png")); - private DirectoryChooser directoryChooser = new DirectoryChooser(); private MenuItem like = new MenuItem("like"); private MenuItem dislike = new MenuItem("dislike"); //TODO one option (like or dislike) private ContextMenu menu = new ContextMenu(like, dislike); @@ -290,6 +289,7 @@ public class MainWindowController { omdbAPIController = new OMDbAPIController(this, dbController, this.main); } + // call all init methods void init() { loadSettings(); checkAutoUpdate(); @@ -632,10 +632,11 @@ public class MainWindowController { @FXML private void addDirectoryBtnAction(){ - File selectedFolder = directoryChooser.showDialog(null); + DirectoryChooser directoryChooser = new DirectoryChooser(); + directoryChooser.setTitle(bundle.getString("addDirectory")); + File selectedFolder = directoryChooser.showDialog(main.getPrimaryStage()); if (selectedFolder != null && selectedFolder.exists()) { - addSource(selectedFolder.getPath(), "local"); - dbController.refreshDataBase(); + mainWindowController.addSource(selectedFolder.getPath(), "local"); } else { LOGGER.error("The selected folder dosen't exist!"); } @@ -644,7 +645,7 @@ public class MainWindowController { @FXML private void addStreamSourceBtnAction(){ FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Open Resource File"); + fileChooser.setTitle("addStreamSource"); File selectedFile = fileChooser.showOpenDialog(main.getPrimaryStage()); if (selectedFile != null && selectedFile.exists()) { addSource(selectedFile.getPath(), "stream"); diff --git a/src/main/resources/locals/HomeFlix-Local_de_DE.properties b/src/main/resources/locals/HomeFlix-Local_de_DE.properties index d64608e..f8c6279 100644 --- a/src/main/resources/locals/HomeFlix-Local_de_DE.properties +++ b/src/main/resources/locals/HomeFlix-Local_de_DE.properties @@ -60,5 +60,6 @@ imdbRating = IMDB-Bewertung type = Type #first start -firstStartHeader = Es ist kein Stammverzeichnis f\u00FCr Filme angegeben! -firstStartContent = Stammverzeichniss angeben? +addSourceHeader = Neue Quelle hinzuf\u00FCgen +addSourceBody = HomeFlix konnte keine Quelle finden. \nFüge eine loakels Verzeichniss oder eine Sreaming Datei als neue Quelle hinzu. +cancelBtnText = Abbrechen diff --git a/src/main/resources/locals/HomeFlix-Local_en_US.properties b/src/main/resources/locals/HomeFlix-Local_en_US.properties index 047f2c7..9df7ff2 100644 --- a/src/main/resources/locals/HomeFlix-Local_en_US.properties +++ b/src/main/resources/locals/HomeFlix-Local_en_US.properties @@ -60,5 +60,6 @@ imdbRating = IMDB-Rating type = Type #first start -firstStartHeader = There is no root directory for movies! -firstStartContent = Specify a root directory? +addSourceHeader = add a new source +addSourceBody = HomeFlix was not able to load a source. \nAdd a new local directory oa a streaming file as new source. +cancelBtnText = cancel