added autoplay option

* added a toggle button to enable autoplay
* the table, text area and imageview are now on a separate anchorpane "TableModel"
This commit is contained in:
Jannik 2018-04-07 17:14:35 +02:00
parent 87b3eae9fb
commit ffa7de49dd
6 changed files with 197 additions and 133 deletions

View File

@ -104,6 +104,9 @@ public class MainWindowController {
@FXML @FXML
private AnchorPane mainAnchorPane; private AnchorPane mainAnchorPane;
@FXML
private AnchorPane tableModeAnchorPane;
@FXML @FXML
private ScrollPane settingsScrollPane; private ScrollPane settingsScrollPane;
@ -147,7 +150,7 @@ public class MainWindowController {
private JFXButton debugBtn; private JFXButton debugBtn;
@FXML @FXML
public JFXButton updateBtn; private JFXButton updateBtn;
@FXML @FXML
private JFXButton addDirectoryBtn; private JFXButton addDirectoryBtn;
@ -161,6 +164,9 @@ public class MainWindowController {
@FXML @FXML
private JFXToggleButton autoUpdateToggleBtn; private JFXToggleButton autoUpdateToggleBtn;
@FXML
private JFXToggleButton autoplayToggleBtn;
@FXML @FXML
private JFXTextField searchTextField; private JFXTextField searchTextField;
@ -228,6 +234,7 @@ public class MainWindowController {
private boolean settingsTrue = false; private boolean settingsTrue = false;
private boolean autoUpdate = false; private boolean autoUpdate = false;
private boolean useBeta = false; private boolean useBeta = false;
private boolean autoplay = false;
private static final Logger LOGGER = LogManager.getLogger(MainWindowController.class.getName()); private static final Logger LOGGER = LogManager.getLogger(MainWindowController.class.getName());
private int hashA = -647380320; private int hashA = -647380320;
@ -513,6 +520,7 @@ public class MainWindowController {
updateBtn.setFont(Font.font("System", 12)); updateBtn.setFont(Font.font("System", 12));
autoUpdateToggleBtn.setSelected(isAutoUpdate()); autoUpdateToggleBtn.setSelected(isAutoUpdate());
autoplayToggleBtn.setSelected(isAutoplay());
languageChoisBox.setItems(languages); languageChoisBox.setItems(languages);
branchChoisBox.setItems(branches); branchChoisBox.setItems(branches);
@ -529,7 +537,7 @@ public class MainWindowController {
@FXML @FXML
private void playbtnclicked() { private void playbtnclicked() {
if (isSupportedFormat(currentTableFilm)) { if (isSupportedFormat(currentTableFilm)) {
new Player(currentTableFilm, dbController); new Player(mainWindowController);
} else { } else {
LOGGER.error("using fallback player!"); LOGGER.error("using fallback player!");
@ -669,7 +677,7 @@ public class MainWindowController {
@FXML @FXML
private void autoUpdateToggleBtnAction(){ private void autoUpdateToggleBtnAction(){
if (autoUpdate) { if (isAutoUpdate()) {
setAutoUpdate(false); setAutoUpdate(false);
} else { } else {
setAutoUpdate(true); setAutoUpdate(true);
@ -677,14 +685,18 @@ public class MainWindowController {
saveSettings(); saveSettings();
} }
@FXML
private void autoplayToggleBtnAction(){
if (isAutoplay()) {
setAutoplay(false);
} else {
setAutoplay(true);
}
saveSettings();
}
// refresh the selected child of the root node // refresh the selected child of the root node
private void refreshTable() { private void refreshTable() {
System.out.println("refresh");
System.out.println(filmRoot.getChildren().get(indexTable).getValue());
System.out.println(currentTableFilm);
// filmRoot.getChildren().get()
filmRoot.getChildren().get(indexTable).setValue(filmsList.get(indexList)); filmRoot.getChildren().get(indexTable).setValue(filmsList.get(indexList));
} }
@ -755,7 +767,6 @@ public class MainWindowController {
} }
} }
//set color of UI-Elements
/** /**
* set the color of the GUI-Elements * set the color of the GUI-Elements
* if usedColor is less than checkColor set text fill white, else black * if usedColor is less than checkColor set text fill white, else black
@ -853,6 +864,7 @@ public class MainWindowController {
fontsizeLbl.setText(getBundle().getString("fontsizeLbl")); fontsizeLbl.setText(getBundle().getString("fontsizeLbl"));
languageLbl.setText(getBundle().getString("languageLbl")); languageLbl.setText(getBundle().getString("languageLbl"));
autoUpdateToggleBtn.setText(getBundle().getString("autoUpdate")); autoUpdateToggleBtn.setText(getBundle().getString("autoUpdate"));
autoplayToggleBtn.setText(getBundle().getString("autoplay"));
branchLbl.setText(getBundle().getString("branchLbl")); branchLbl.setText(getBundle().getString("branchLbl"));
columnStreamUrl.setText(getBundle().getString("columnStreamUrl")); columnStreamUrl.setText(getBundle().getString("columnStreamUrl"));
columnTitle.setText(getBundle().getString("columnName")); columnTitle.setText(getBundle().getString("columnName"));
@ -908,6 +920,7 @@ public class MainWindowController {
props.setProperty("color", getColor()); props.setProperty("color", getColor());
props.setProperty("autoUpdate", String.valueOf(isAutoUpdate())); props.setProperty("autoUpdate", String.valueOf(isAutoUpdate()));
props.setProperty("useBeta", String.valueOf(isUseBeta())); props.setProperty("useBeta", String.valueOf(isUseBeta()));
props.setProperty("autoplay", String.valueOf(isAutoplay()));
props.setProperty("size", getSize().toString()); props.setProperty("size", getSize().toString());
props.setProperty("local", getLocal()); props.setProperty("local", getLocal());
props.setProperty("ratingSortType", columnFavorite.getSortType().toString()); props.setProperty("ratingSortType", columnFavorite.getSortType().toString());
@ -958,6 +971,13 @@ public class MainWindowController {
LOGGER.error("cloud not load autoUpdate", e); LOGGER.error("cloud not load autoUpdate", e);
setUseBeta(false); setUseBeta(false);
} }
try {
setAutoplay(Boolean.parseBoolean(props.getProperty("autoplay")));
} catch (Exception e) {
LOGGER.error("cloud not load autoplay", e);
setAutoplay(false);
}
try { try {
setLocal(props.getProperty("local")); setLocal(props.getProperty("local"));
@ -1032,6 +1052,10 @@ public class MainWindowController {
public String getColor() { public String getColor() {
return color; return color;
} }
public FilmTabelDataType getCurrentTableFilm() {
return currentTableFilm;
}
public String getCurrentTitle() { public String getCurrentTitle() {
return currentTableFilm.getTitle(); return currentTableFilm.getTitle();
@ -1072,6 +1096,14 @@ public class MainWindowController {
public void setUseBeta(boolean useBeta) { public void setUseBeta(boolean useBeta) {
this.useBeta = useBeta; this.useBeta = useBeta;
} }
public boolean isAutoplay() {
return autoplay;
}
public void setAutoplay(boolean autoplay) {
this.autoplay = autoplay;
}
public void setLocal(String input) { public void setLocal(String input) {
this.local = input; this.local = input;

View File

@ -30,24 +30,23 @@ import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
import kellerkinder.HomeFlix.application.Main; import kellerkinder.HomeFlix.application.Main;
import kellerkinder.HomeFlix.controller.DBController; import kellerkinder.HomeFlix.application.MainWindowController;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType; import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
public class Player { public class Player {
private MainWindowController mainWindowController;
private PlayerController playerController; private PlayerController playerController;
private DBController dbController;
private Stage stage; private Stage stage;
private AnchorPane pane; private AnchorPane pane;
private Scene scene; private Scene scene;
/** /**
* generate a new PlayerWindow * generate a new PlayerWindow
* @param entry the film object * @param mainWindowController the MainWindowController
* @param dbController the dbController object
*/ */
public Player(FilmTabelDataType film, DBController dbController) { public Player(MainWindowController mainWindowController) {
this.dbController = dbController; this.mainWindowController = mainWindowController;
try { try {
FXMLLoader fxmlLoader = new FXMLLoader(ClassLoader.getSystemResource("fxml/PlayerWindow.fxml")); FXMLLoader fxmlLoader = new FXMLLoader(ClassLoader.getSystemResource("fxml/PlayerWindow.fxml"));
pane = (AnchorPane) fxmlLoader.load(); pane = (AnchorPane) fxmlLoader.load();
@ -58,14 +57,15 @@ public class Player {
stage.getIcons().add(new Image(Main.class.getResourceAsStream("/icons/Homeflix_Icon_64x64.png"))); stage.getIcons().add(new Image(Main.class.getResourceAsStream("/icons/Homeflix_Icon_64x64.png")));
stage.setOnCloseRequest(new EventHandler<WindowEvent>() { stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent we) { public void handle(WindowEvent we) {
dbController.setCurrentTime(film.getStreamUrl(), playerController.getCurrentTime()); mainWindowController.getDbController().setCurrentTime(mainWindowController.getCurrentStreamUrl(),
playerController.getCurrentTime());
playerController.getMediaPlayer().stop(); playerController.getMediaPlayer().stop();
stage.close(); stage.close();
} }
}); });
playerController = fxmlLoader.getController(); playerController = fxmlLoader.getController();
playerController.init(film, this, dbController); playerController.init(mainWindowController, this, mainWindowController.getCurrentTableFilm());
stage.setFullScreen(true); stage.setFullScreen(true);
stage.show(); stage.show();
@ -75,7 +75,7 @@ public class Player {
} }
public void playNewFilm(FilmTabelDataType film) { public void playNewFilm(FilmTabelDataType film) {
playerController.init(film, this, dbController); playerController.init(mainWindowController, this, film);
} }
public Stage getStage() { public Stage getStage() {

View File

@ -46,14 +46,14 @@ import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaPlayer.Status; import javafx.scene.media.MediaPlayer.Status;
import javafx.scene.media.MediaView; import javafx.scene.media.MediaView;
import javafx.util.Duration; import javafx.util.Duration;
import kellerkinder.HomeFlix.controller.DBController; import kellerkinder.HomeFlix.application.MainWindowController;
import kellerkinder.HomeFlix.datatypes.FilmTabelDataType; import kellerkinder.HomeFlix.datatypes.FilmTabelDataType;
public class PlayerController { public class PlayerController {
@FXML @FXML
private MediaView mediaView; private MediaView mediaView;
@FXML @FXML
private VBox bottomVBox; private VBox bottomVBox;
@ -62,10 +62,10 @@ public class PlayerController {
@FXML @FXML
private JFXSlider timeSlider; private JFXSlider timeSlider;
@FXML @FXML
private JFXButton stopBtn; private JFXButton stopBtn;
@FXML @FXML
private JFXButton playBtn; private JFXButton playBtn;
@ -73,10 +73,10 @@ public class PlayerController {
private JFXButton fullscreenBtn; private JFXButton fullscreenBtn;
private Player player; private Player player;
private DBController dbController; private MainWindowController mainWCon;
private Media media; private Media media;
private MediaPlayer mediaPlayer; private MediaPlayer mediaPlayer;
private FilmTabelDataType film; private FilmTabelDataType film;
private double currentTime = 0; private double currentTime = 0;
private double seekTime = 0; private double seekTime = 0;
@ -84,8 +84,8 @@ public class PlayerController {
private double duration = 0; private double duration = 0;
private boolean mousePressed = false; private boolean mousePressed = false;
private boolean showControls = true; private boolean showControls = true;
private boolean autoplay = true; private boolean autoplay;
private ImageView stop_black = new ImageView(new Image("icons/ic_stop_black_24dp_1x.png")); private ImageView stop_black = new ImageView(new Image("icons/ic_stop_black_24dp_1x.png"));
private ImageView play_arrow_black = new ImageView(new Image("icons/ic_play_arrow_black_24dp_1x.png")); private ImageView play_arrow_black = new ImageView(new Image("icons/ic_play_arrow_black_24dp_1x.png"));
private ImageView pause_black = new ImageView(new Image("icons/ic_pause_black_24dp_1x.png")); private ImageView pause_black = new ImageView(new Image("icons/ic_pause_black_24dp_1x.png"));
@ -94,23 +94,26 @@ public class PlayerController {
/** /**
* initialize the new PlayerWindow * initialize the new PlayerWindow
* @param entry the film object * @param entry the film object
* @param player the player object (needed for closing action) * @param player the player object (needed for closing action)
* @param dbController the dbController object * @param dbController the dbController object
*/ */
public void init(FilmTabelDataType film, Player player, DBController dbController) { public void init(MainWindowController mainWCon, Player player, FilmTabelDataType film) {
this.film = film; this.mainWCon = mainWCon;
this.player = player; this.player = player;
this.dbController = dbController; this.film = film;
startTime = mainWCon.getDbController().getCurrentTime(film.getStreamUrl());
autoplay = mainWCon.isAutoplay();
initActions(); initActions();
if (film.getStreamUrl().startsWith("http")) { if (film.getStreamUrl().startsWith("http")) {
media = new Media(film.getStreamUrl()); media = new Media(film.getStreamUrl());
} else { } else {
media = new Media(new File(film.getStreamUrl()).toURI().toString()); media = new Media(new File(film.getStreamUrl()).toURI().toString());
} }
startTime = dbController.getCurrentTime(film.getStreamUrl()); startTime = mainWCon.getDbController().getCurrentTime(film.getStreamUrl());
autoplay = mainWCon.isAutoplay();
mediaPlayer = new MediaPlayer(media); mediaPlayer = new MediaPlayer(media);
mediaView.setPreserveRatio(true); mediaView.setPreserveRatio(true);
mediaView.setMediaPlayer(mediaPlayer); mediaView.setMediaPlayer(mediaPlayer);
@ -121,56 +124,59 @@ public class PlayerController {
width.bind(Bindings.selectDouble(mediaView.sceneProperty(), "width")); width.bind(Bindings.selectDouble(mediaView.sceneProperty(), "width"));
height.bind(Bindings.selectDouble(mediaView.sceneProperty(), "height")); height.bind(Bindings.selectDouble(mediaView.sceneProperty(), "height"));
// start the media if the player is ready
mediaPlayer.setOnReady(new Runnable() { mediaPlayer.setOnReady(new Runnable() {
@Override @Override
public void run() { public void run() {
duration = media.getDuration().toMillis(); duration = media.getDuration().toMillis();
timeSlider.setMax((duration/1000)/60);
mediaPlayer.play(); timeSlider.setMax((duration / 1000) / 60);
mediaPlayer.seek(Duration.millis(startTime));
} mediaPlayer.play();
}); mediaPlayer.seek(Duration.millis(startTime));
}
});
// every time the play time changes execute this
// TODO rework autoplay
mediaPlayer.currentTimeProperty().addListener(new ChangeListener<Duration>() { mediaPlayer.currentTimeProperty().addListener(new ChangeListener<Duration>() {
@Override @Override
public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) { public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
currentTime = newValue.toMillis(); currentTime = newValue.toMillis(); // set the current time
int episode = !film.getEpisode().isEmpty() ? Integer.parseInt(film.getEpisode()) : 0; int episode = !film.getEpisode().isEmpty() ? Integer.parseInt(film.getEpisode()) : 0;
if ((duration - currentTime) < 10000 && episode != 0 && autoplay) { // if we are end time -10 seconds, do autoplay, if activated
autoplay = false; if ((duration - currentTime) < 10000 && episode != 0 && autoplay) {
dbController.setCurrentTime(film.getStreamUrl(), 0); // reset old video start time autoplay = false;
mainWCon.getDbController().setCurrentTime(film.getStreamUrl(), 0); // reset old video start time
//start the new film FilmTabelDataType nextFilm = mainWCon.getDbController().getNextEpisode(film.getTitle(), (episode + 1));
FilmTabelDataType nextFilm = dbController.getNextEpisode(film.getTitle(), episode + 1); if (nextFilm != null) {
if (nextFilm != null) { mediaPlayer.stop();
mediaPlayer.stop(); player.playNewFilm(nextFilm);
player.playNewFilm(nextFilm); autoplay = true;
autoplay = true;
} }
} else if ((duration - currentTime) < 100) { } else if ((duration - currentTime) < 100) {
mediaPlayer.stop(); mediaPlayer.stop();
} }
if (!mousePressed) { if (!mousePressed) {
timeSlider.setValue((currentTime/1000)/60); timeSlider.setValue((currentTime / 1000) / 60);
} }
} }
}); });
// set the control elements to the correct value
stopBtn.setGraphic(stop_black); stopBtn.setGraphic(stop_black);
playBtn.setGraphic(pause_black); playBtn.setGraphic(pause_black);
fullscreenBtn.setGraphic(fullscreen_exit_black); fullscreenBtn.setGraphic(fullscreen_exit_black);
timeSlider.setValue(0); timeSlider.setValue(0);
} }
/** /**
* initialize some PlayerWindow GUI-Elements actions * initialize some PlayerWindow GUI-Elements actions
*/ */
private void initActions() { private void initActions() {
player.getScene().addEventFilter(MouseEvent.MOUSE_MOVED, new EventHandler<MouseEvent>() { player.getScene().addEventFilter(MouseEvent.MOUSE_MOVED, new EventHandler<MouseEvent>() {
// hide controls timer init // hide controls timer init
final Timer timer = new Timer(); final Timer timer = new Timer();
@ -179,13 +185,13 @@ public class PlayerController {
@Override @Override
public void handle(MouseEvent mouseEvent) { public void handle(MouseEvent mouseEvent) {
// show controls // show controls
if (!showControls) { if (!showControls) {
player.getScene().setCursor(Cursor.DEFAULT); player.getScene().setCursor(Cursor.DEFAULT);
bottomVBox.setVisible(true); bottomVBox.setVisible(true);
} }
// hide controls // hide controls
if (controlAnimationTask != null) if (controlAnimationTask != null)
controlAnimationTask.cancel(); controlAnimationTask.cancel();
@ -202,40 +208,40 @@ public class PlayerController {
} }
}); });
// if the mouse on the timeSlider is released seek to the new position
timeSlider.setOnMouseReleased(new EventHandler<MouseEvent>() { timeSlider.setOnMouseReleased(new EventHandler<MouseEvent>() {
@Override @Override
public void handle(MouseEvent event) { public void handle(MouseEvent event) {
mediaPlayer.seek(new Duration(seekTime)); mediaPlayer.seek(new Duration(seekTime));
mousePressed = false; mousePressed = false;
} }
}); });
timeSlider.setOnMousePressed(new EventHandler<MouseEvent>() { timeSlider.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override @Override
public void handle(MouseEvent event) { public void handle(MouseEvent event) {
mousePressed = true; mousePressed = true;
} }
}); });
// get the new seek time
timeSlider.valueProperty().addListener(new ChangeListener<Number>() { timeSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override @Override
public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) { public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
seekTime = (double) new_val*1000*60; seekTime = (double) new_val * 1000 * 60;
} }
}); });
} }
@FXML @FXML
void stopBtnAction(ActionEvent event) { void stopBtnAction(ActionEvent event) {
mainWCon.getDbController().setCurrentTime(film.getStreamUrl(), currentTime);
dbController.setCurrentTime(film.getStreamUrl(), currentTime);
mediaPlayer.stop(); mediaPlayer.stop();
player.getStage().close(); player.getStage().close();
} }
@FXML @FXML
void fullscreenBtnAction(ActionEvent event) { void fullscreenBtnAction(ActionEvent event) {
if (player.getStage().isFullScreen()) { if (player.getStage().isFullScreen()) {
player.getStage().setFullScreen(false); player.getStage().setFullScreen(false);
fullscreenBtn.setGraphic(fullscreen_black); fullscreenBtn.setGraphic(fullscreen_black);

View File

@ -24,58 +24,38 @@
<AnchorPane fx:id="mainAnchorPane" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.MainWindowController"> <AnchorPane fx:id="mainAnchorPane" prefHeight="600.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="kellerkinder.HomeFlix.application.MainWindowController">
<children> <children>
<ScrollPane fx:id="textScrollPane" fitToWidth="true" layoutX="408.0" layoutY="44.0" prefHeight="544.0" prefWidth="320.0" AnchorPane.bottomAnchor="12.0" AnchorPane.rightAnchor="222.0" AnchorPane.topAnchor="44.0"> <AnchorPane fx:id="tableModeAnchorPane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0">
<content>
<TextFlow fx:id="textFlow" accessibleRole="TEXT_AREA" maxHeight="544.0" maxWidth="320.0" visible="true" />
</content>
</ScrollPane>
<TreeTableView fx:id="filmsTreeTable" layoutX="14.0" layoutY="88.0" prefHeight="500.0" prefWidth="420.0" AnchorPane.bottomAnchor="12.0" AnchorPane.leftAnchor="12.0" AnchorPane.rightAnchor="568.0" AnchorPane.topAnchor="88.0" />
<JFXButton fx:id="playbtn" contentDisplay="CENTER" layoutX="690.0" layoutY="363.0" onAction="#playbtnclicked" prefHeight="25.0" prefWidth="198.0" AnchorPane.bottomAnchor="212.0" AnchorPane.rightAnchor="12.0">
<font>
<Font name="System Bold" size="14.0" />
</font></JFXButton>
<JFXButton fx:id="openfolderbtn" layoutX="690.0" layoutY="404.0" onAction="#openfolderbtnclicked" prefHeight="25.0" prefWidth="198.0" text="open Folder" AnchorPane.bottomAnchor="171.0" AnchorPane.rightAnchor="12.0">
<font>
<Font name="System Bold" size="14.0" />
</font></JFXButton>
<JFXTextField fx:id="searchTextField" layoutX="12.0" layoutY="44.0" maxWidth="-Infinity" minWidth="420.0" prefHeight="31.0" promptText="search ..." AnchorPane.leftAnchor="12.0" AnchorPane.rightAnchor="568.0" AnchorPane.topAnchor="44.0">
<font>
<Font name="Arial" size="12.0" />
</font></JFXTextField>
<ImageView fx:id="posterImageView" fitHeight="297.0" fitWidth="198.0" layoutX="481.0" layoutY="46.0" pickOnBounds="true" preserveRatio="true" AnchorPane.rightAnchor="12.0" AnchorPane.topAnchor="44.0">
<image>
<Image url="@../icons/Homeflix_Poster.png" />
</image></ImageView>
<JFXButton fx:id="returnBtn" contentDisplay="CENTER" layoutX="690.0" layoutY="443.0" onAction="#returnBtnclicked" prefHeight="25.0" prefWidth="90.0" AnchorPane.bottomAnchor="132.0" AnchorPane.rightAnchor="120.0" />
<JFXButton fx:id="forwardBtn" contentDisplay="CENTER" layoutX="798.0" layoutY="443.0" onAction="#forwardBtnclicked" prefHeight="25.0" prefWidth="90.0" AnchorPane.bottomAnchor="132.0" AnchorPane.rightAnchor="12.0" />
<HBox fx:id="topHBox" layoutY="12.0" prefHeight="32.0" prefWidth="900.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children> <children>
<JFXHamburger fx:id="menuHam"> <JFXTextField fx:id="searchTextField" maxWidth="-Infinity" minWidth="420.0" prefHeight="31.0" promptText="search ..." AnchorPane.leftAnchor="12.0" AnchorPane.rightAnchor="568.0" AnchorPane.topAnchor="12.0">
<padding> <font>
<Insets left="3.0" /> <Font name="Arial" size="12.0" />
</padding> </font>
</JFXHamburger> </JFXTextField>
<TreeTableView fx:id="filmsTreeTable" prefHeight="500.0" prefWidth="420.0" AnchorPane.bottomAnchor="12.0" AnchorPane.leftAnchor="12.0" AnchorPane.rightAnchor="568.0" AnchorPane.topAnchor="56.0" />
<ScrollPane fx:id="textScrollPane" fitToWidth="true" prefHeight="544.0" prefWidth="320.0" AnchorPane.bottomAnchor="12.0" AnchorPane.rightAnchor="222.0" AnchorPane.topAnchor="12.0">
<content>
<TextFlow fx:id="textFlow" accessibleRole="TEXT_AREA" maxHeight="544.0" maxWidth="320.0" visible="true" />
</content>
</ScrollPane>
<ImageView fx:id="posterImageView" fitHeight="297.0" fitWidth="198.0" pickOnBounds="true" preserveRatio="true" AnchorPane.rightAnchor="12.0" AnchorPane.topAnchor="12.0">
<image>
<Image url="@../icons/Homeflix_Poster.png" />
</image>
</ImageView>
<JFXButton fx:id="playbtn" contentDisplay="CENTER" onAction="#playbtnclicked" prefHeight="25.0" prefWidth="198.0" AnchorPane.bottomAnchor="212.0" AnchorPane.rightAnchor="12.0">
<font>
<Font name="System Bold" size="14.0" />
</font>
</JFXButton>
<JFXButton fx:id="openfolderbtn" onAction="#openfolderbtnclicked" prefHeight="25.0" prefWidth="198.0" text="open Folder" AnchorPane.bottomAnchor="171.0" AnchorPane.rightAnchor="12.0">
<font>
<Font name="System Bold" size="14.0" />
</font>
</JFXButton>
<JFXButton fx:id="returnBtn" contentDisplay="CENTER" onAction="#returnBtnclicked" prefHeight="25.0" prefWidth="90.0" AnchorPane.bottomAnchor="132.0" AnchorPane.rightAnchor="120.0" />
<JFXButton fx:id="forwardBtn" contentDisplay="CENTER" onAction="#forwardBtnclicked" prefHeight="25.0" prefWidth="90.0" AnchorPane.bottomAnchor="132.0" AnchorPane.rightAnchor="12.0" />
</children> </children>
</HBox> </AnchorPane>
<VBox fx:id="sideMenuVBox" layoutY="32.0" prefHeight="660.0" prefWidth="150.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="32.0">
<children>
<JFXButton fx:id="aboutBtn" onAction="#aboutBtnAction" prefHeight="32.0" prefWidth="150.0" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
<JFXButton fx:id="settingsBtn" onAction="#settingsBtnclicked" prefHeight="37.0" prefWidth="150.0" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
<JFXButton fx:id="debugBtn" onAction="#debugBtnclicked" prefHeight="32.0" prefWidth="150.0" text="debugging" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
</children>
</VBox>
<ScrollPane fx:id="settingsScrollPane" prefHeight="568.0" prefWidth="800.0" style="-fx-background: white;" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="150.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0"> <ScrollPane fx:id="settingsScrollPane" prefHeight="568.0" prefWidth="800.0" style="-fx-background: white;" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="150.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="32.0">
<content> <content>
<AnchorPane fx:id="settingsAnchorPane" style="-fx-background-color: white;"> <AnchorPane fx:id="settingsAnchorPane" style="-fx-background-color: white;">
@ -139,10 +119,26 @@
<ChoiceBox fx:id="branchChoisBox" prefWidth="150.0" /> <ChoiceBox fx:id="branchChoisBox" prefWidth="150.0" />
</children> </children>
</HBox> </HBox>
<JFXToggleButton fx:id="autoUpdateToggleBtn" onAction="#autoUpdateToggleBtnAction" text="check for updates on startup" /> <JFXToggleButton fx:id="autoUpdateToggleBtn" onAction="#autoUpdateToggleBtnAction" text="check for updates on startup">
<padding>
<Insets bottom="-5.0" top="-5.0" />
</padding></JFXToggleButton>
<Label fx:id="versionLbl" text="Version" />
</children>
</VBox>
<VBox spacing="10.0">
<children>
<Label fx:id="PlayerLbl" text="Player" />
<JFXToggleButton fx:id="autoplayToggleBtn" onAction="#autoplayToggleBtnAction" text="autoplay">
<VBox.margin>
<Insets />
</VBox.margin>
<padding>
<Insets bottom="-5.0" top="-5.0" />
</padding>
</JFXToggleButton>
</children> </children>
</VBox> </VBox>
<Label fx:id="versionLbl" text="Version" />
<VBox spacing="10.0"> <VBox spacing="10.0">
<children> <children>
<Label fx:id="sourcesLbl" text="Sources" /> <Label fx:id="sourcesLbl" text="Sources" />
@ -173,5 +169,33 @@
</AnchorPane> </AnchorPane>
</content> </content>
</ScrollPane> </ScrollPane>
<HBox fx:id="topHBox" layoutY="12.0" prefHeight="32.0" prefWidth="900.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<JFXHamburger fx:id="menuHam">
<padding>
<Insets left="3.0" />
</padding>
</JFXHamburger>
</children>
</HBox>
<VBox fx:id="sideMenuVBox" layoutY="32.0" prefHeight="660.0" prefWidth="150.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="32.0">
<children>
<JFXButton fx:id="aboutBtn" onAction="#aboutBtnAction" prefHeight="32.0" prefWidth="150.0" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
<JFXButton fx:id="settingsBtn" onAction="#settingsBtnclicked" prefHeight="37.0" prefWidth="150.0" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
<JFXButton fx:id="debugBtn" onAction="#debugBtnclicked" prefHeight="32.0" prefWidth="150.0" text="debugging" textAlignment="CENTER">
<font>
<Font name="System Bold" size="15.0" />
</font>
</JFXButton>
</children>
</VBox>
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -20,6 +20,7 @@ updateBtnChecking = Es wird nach Updates gesucht...
updateBtnUpdateAvailable = Update verf\u00FCgbar updateBtnUpdateAvailable = Update verf\u00FCgbar
updateBtnNoUpdateAvailable = Kein Update verf\u00FCgbar updateBtnNoUpdateAvailable = Kein Update verf\u00FCgbar
autoUpdate = beim Start nach Updates suchen: autoUpdate = beim Start nach Updates suchen:
autoplay = autoplay
branchLbl = Updatezweig branchLbl = Updatezweig
#column translations #column translations

View File

@ -20,6 +20,7 @@ updateBtnChecking = checking for updates...
updateBtnUpdateAvailable = update available updateBtnUpdateAvailable = update available
updateBtnNoUpdateAvailable = no update available updateBtnNoUpdateAvailable = no update available
autoUpdate = check at startup for updates: autoUpdate = check at startup for updates:
autoplay = autoplay
branchLbl = Branch branchLbl = Branch
#column translations #column translations