diff --git a/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java b/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java index 59f9e0b..f6d918b 100644 --- a/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java +++ b/src/main/java/kellerkinder/HomeFlix/application/MainWindowController.java @@ -363,7 +363,7 @@ public class MainWindowController { @Override public void changed(ObservableValue observable, String oldValue, String newValue) { ObservableList helpData; - filterData.removeAll(filterData); + filterData.clear(); filmRoot.getChildren().removeAll(filmRoot.getChildren()); helpData = filmsList; @@ -440,31 +440,33 @@ public class MainWindowController { /** * FIXME fix bug when sort by ASCENDING, wrong order - * FIXME when sorting, series are expanded */ columnFavorite.sortTypeProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue paramObservableValue, SortType paramT1, SortType paramT2) { filmRoot.getChildren().clear(); + filterData.clear(); if (paramT2.equals(SortType.DESCENDING)) { for (FilmTabelDataType film : filmsList) { if (film.getFavorite()) { - filmRoot.getChildren().add(0, new TreeItem(film)); + filterData.add(0, film); } else { - filmRoot.getChildren().add(new TreeItem(film)); + filterData.add(film); } } } else { System.out.println("ascending"); for (FilmTabelDataType film : filmsList) { if (!film.getFavorite()) { - filmRoot.getChildren().add(new TreeItem(film)); + filterData.add(0, film); } else { - filmRoot.getChildren().add(new TreeItem(film)); + filterData.add(film); } } } + + addDataUI(filterData); } }); @@ -472,9 +474,17 @@ public class MainWindowController { filmsTreeTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldVal, Object newVal) { + if (filmsTreeTable.getSelectionModel().getSelectedItem() == null) { + return; + } + currentTableFilm = filmsTreeTable.getSelectionModel().getSelectedItem().getValue(); // set the current film object - indexList = filmsList.indexOf(currentTableFilm); // get selected items list index indexTable = filmsTreeTable.getSelectionModel().getSelectedIndex(); // get selected items table index + for (FilmTabelDataType film : filmsList) { + if (film.equals(currentTableFilm)) { + indexList = filmsList.indexOf(film); // get selected items list index + } + } last = indexTable - 1; next = indexTable + 1; @@ -681,9 +691,9 @@ public class MainWindowController { /** * add data from films-list to films-table */ - public void addDataUI() { + public void addDataUI(ObservableList elementsList) { - for (FilmTabelDataType element : filmsList) { + for (FilmTabelDataType element : elementsList) { // only if the entry contains a season and a episode it's a valid series if (!element.getSeason().isEmpty() && !element.getEpisode().isEmpty()) { diff --git a/src/main/java/kellerkinder/HomeFlix/controller/DBController.java b/src/main/java/kellerkinder/HomeFlix/controller/DBController.java index 1d05e7b..b91d970 100644 --- a/src/main/java/kellerkinder/HomeFlix/controller/DBController.java +++ b/src/main/java/kellerkinder/HomeFlix/controller/DBController.java @@ -232,7 +232,7 @@ public class DBController { } LOGGER.info("loading data to the GUI ..."); - mainWindowController.addDataUI(); + mainWindowController.addDataUI(mainWindowController.getFilmsList()); } /**