From 3a73d84bfb3fb28b695ba49a537f6d75ee878214 Mon Sep 17 00:00:00 2001 From: Seil0 Date: Sat, 4 Feb 2017 16:15:47 +0100 Subject: [PATCH] finished dbcontroller and favourites pre releas version of Project HomeFlix for version 0.5 plasma cow --- bin/application/DBController.class | Bin 14091 -> 14324 bytes bin/application/MainWindow.fxml | 8 +- bin/application/MainWindowController$1.class | Bin 2524 -> 2524 bytes bin/application/MainWindowController$2.class | Bin 2799 -> 2843 bytes bin/application/MainWindowController$3.class | Bin 1571 -> 1571 bytes bin/application/MainWindowController$4.class | Bin 1991 -> 1991 bytes bin/application/MainWindowController$5.class | Bin 2509 -> 2509 bytes bin/application/MainWindowController$6.class | Bin 2469 -> 2469 bytes bin/application/MainWindowController.class | Bin 34512 -> 34337 bytes bin/application/apiQuery.class | Bin 5670 -> 5714 bytes src/application/DBController.java | 50 ++++++---- src/application/MainWindow.fxml | 8 +- src/application/MainWindowController.java | 96 +++++++------------ src/application/apiQuery.java | 1 + 14 files changed, 73 insertions(+), 90 deletions(-) diff --git a/bin/application/DBController.class b/bin/application/DBController.class index d674821300f137ad999350187556a2d8fe9b871e..dbf1e3d71b3fe6484128b2b2296f96b9f67fd7dd 100644 GIT binary patch literal 14324 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 literal 14091 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 diff --git a/bin/application/MainWindow.fxml b/bin/application/MainWindow.fxml index c2aeb84..eb15ef1 100644 --- a/bin/application/MainWindow.fxml +++ b/bin/application/MainWindow.fxml @@ -17,10 +17,10 @@ - + - - + + @@ -29,7 +29,7 @@ - + diff --git a/bin/application/MainWindowController$1.class b/bin/application/MainWindowController$1.class index 03a46a6341dddc496a84fd31d56538f0c1b722c5..4eeefa5530026e138ab9b9f2dc4340d927043501 100644 GIT binary patch delta 51 zcmca3d`Eag5eK95|Odbp>Or8uTOkNEBOx_GxOg;={Ouh{5OnwZLnEWTF Hah3r9SGx=? delta 51 zcmca3d`Eag5eH-J{BC)DD*g4}r_Vqy&yyG-XWJ#W ze`POmDP)vF#3UU;P#TX*!{y0hNE=fT)0BkNc%e{?<3A-J1roIv2gM{`= z@T*c~qWc5UM~ZLBI?BvcnR8I3ysz_nH0eD+BbXwMW{RAdX2{GiW@cG1bG%f3Wy-uU z^L$tT(=2jeVlie(Qf8Tq)?Xv(B+1gOFGq{SI$p)$5_d55;Ih&Ql{(@s_f&d>8{Ah) zu%k;mrUzOdY3Xs3he|6NN#p-zOyrM_73B}>c g%47R3JkzzN8N)iQb^nwN^`35clV?h9i>l`AKjZpVF#rGn delta 476 zcmXYt&r4fD5XV2ezP!A~hr~o%@YY-etDvF>d#XjEr(TK|FXE4wM58fkOl)nVHCigI z72ZiK`ZtJ@gNWoH2tD+V=sDm;5ERAPrvtO|*`1x4@9zG~tLE_EhtqSQhwnkOBIdnT zv7_#TzUOuNjG z@%rpmYtAKmJZbkT>x=2Gg0VmdMajDe?x;=gqmxpr-kH<-;t~fNRKTk_wNhlf!sH&& zwiDb)vO?NGh1ny~YSAd`TN*%@XwYlK^g8`|gF#&;r#Ja6yr+L~sJHni@xT7bwf@Du z-cgp`B_j1h1kE&}G|A4;JULNjXraU++Q%iKIvI6Co@E(5z%T`&0Dt5ko~S7G?sMrp zD?*>-B#eE}pi*}t%k8?QJKRq*pCwx_*)Hj2No;I;Q)RWiO1wk7!dLS`{my@)ZF-6u cxuQnyulcmjD?ff?!#{1I%$AV(SW_YP2hv$+CK0s)kh2?bycmH-O^mjD?8m;fLGnUi(} Etrav2!TXhvzP+|0|A_qoCa|Xp8ymBpa3cYp#U)gqLUg2 Ets@)^C;$Ke diff --git a/bin/application/MainWindowController$5.class b/bin/application/MainWindowController$5.class index 8d32ae59d7111c086cf38c4b83e93b7f31abe9e4..ea1cacb34c07612b3a4d474dcda6aea336f0110d 100644 GIT binary patch delta 85 zcmV-b0IL7Z6U`H_paB6iv!MZs1OYX(EC$8_0gIFK2m3XS01pC>067AX06YSb0A>P{ r0CxhF0FMHe0Fwfj0GQM r0Cxhf0FMH&0Fwf-0GQI r0Cxhb0FMH!0Fwf(0GQi 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 Y)+3xWwO?Sej0P%jv$YA~K~};41GDq*JOBUy literal 34512 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 Ld}`pniyD6cyjZU2 diff --git a/src/application/DBController.java b/src/application/DBController.java index 47f3f6e..9844614 100644 --- a/src/application/DBController.java +++ b/src/application/DBController.java @@ -34,9 +34,9 @@ public class DBController { } private MainWindowController mainWindowController; - private String DB_PATH = System.getProperty("user.home") + "\\Documents\\HomeFlix" + "\\" + "Homeflix.db"; // der Pfad der Datenbank-Datei - private ImageView favorite_black = new ImageView(new Image("recources/icons/ic_favorite_black_18dp_1x.png")); - private ImageView favorite_border_black = new ImageView(new Image("recources/icons/ic_favorite_border_black_18dp_1x.png")); + private String DB_PATH = System.getProperty("user.home") + "\\Documents\\HomeFlix" + "\\" + "Homeflix.db"; //path to database file + private Image favorite_black = new Image("recources/icons/ic_favorite_black_18dp_1x.png"); + private Image favorite_border_black = new Image("recources/icons/ic_favorite_border_black_18dp_1x.png"); private List filmsdbAll = new ArrayList(); private List filmsdbLocal = new ArrayList(); private List filmsdbStream = new ArrayList(); @@ -53,9 +53,9 @@ public class DBController { // create a database connection connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH); // Statement statement = connection.createStatement(); - // statement.setQueryTimeout(30); // set timeout to 30 sec. TODO don't know wath to do with this + // statement.setQueryTimeout(30); // set timeout to 30 sec. TODO don't know what to do with this - connection.setAutoCommit(false); //Autocommit to false -> manual commit is active + connection.setAutoCommit(false); //AutoCommit to false -> manual commit is active // fuelleDatenbank(); } catch (SQLException e) { // if the error message is "out of memory", it probably means no database file is found @@ -142,17 +142,17 @@ public class DBController { ps = connection.prepareStatement("insert into film_local values (?, ?, ?, ?)"); psS = connection.prepareStatement("insert into film_streaming values (?, ?, ?, ?, ?, ?, ?, ?)"); - for(int j=0;j!=entries.length;j++) // Geht alle Dateien im Verzeichniss durch + for(int j=0;j!=entries.length;j++) //goes through all the files in the directory { - ps.setInt(1, 0); // definiert Bewertung als Integer in der dritten Spalte - ps.setString(2, cutOffEnd(entries[j])); // definiert Name als String in der ersten Spalte - ps.setString(3,entries[j]); // definiert Pfad als String in der zweiten Spalte + ps.setInt(1, 0); //rating as integer 1. column + ps.setString(2, cutOffEnd(entries[j])); //name as String without ending 2. column + ps.setString(3,entries[j]); //path as String 3. column ps.setString(4, "favorite_border_black"); - ps.addBatch(); // fügt den Eintrag hinzu + ps.addBatch(); // add command to prepared statement } if(mainWindowController.getStreamingPath().equals("")||mainWindowController.getStreamingPath().equals(null)){ - System.out.println("Kein Pfad angegeben"); //falls der Pfad null oder "" ist + System.out.println("Kein Pfad angegeben"); //if path == null or "" }else{ for(int i=0; i< mainWindowController.streamingData.size(); i++){ String fileNamea = mainWindowController.getStreamingPath()+"/"+mainWindowController.streamingData.get(i).getStreamUrl(); @@ -168,14 +168,14 @@ public class DBController { psS.setString(6, item.asObject().getString("titel","")); psS.setString(7, item.asObject().getString("streamUrl", "")); psS.setString(8, "favorite_border_black"); - psS.addBatch(); // fügt den Eintrag hinzu + psS.addBatch(); // add command to prepared statement } } catch (IOException e) { e.printStackTrace(); } } } - ps.executeBatch(); // scheibt alle Einträge in die Datenbank + ps.executeBatch(); //execute statement to write entries into table psS.executeBatch(); connection.commit(); ps.close(); @@ -208,7 +208,11 @@ public class DBController { Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_local"); while (rs.next()) { - mainWindowController.newDaten.add(new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), favorite_border_black)); + if(rs.getString(4).equals("favorite_black")){ + mainWindowController.newDaten.add( new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black))); + }else{ + mainWindowController.newDaten.add( new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black))); + } } stmt.close(); rs.close(); @@ -216,7 +220,11 @@ public class DBController { //load streaming Data TODO check if there are streaming data before loading -> maybe there is an issue now rs = stmt.executeQuery("SELECT * FROM film_streaming;"); while (rs.next()) { - mainWindowController.streamData.add(new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), favorite_border_black)); + if(rs.getString(8).equals("favorite_black")){ + mainWindowController.streamData.add(new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_black))); + }else{ + mainWindowController.streamData.add(new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_border_black))); + } } stmt.close(); rs.close(); @@ -227,7 +235,7 @@ public class DBController { System.out.println("<==========finished loading sql==========>"); } - //refreshs the data in mainWindowController.newDaten and mainWindowController.streamData + //Refreshes the data in mainWindowController.newDaten and mainWindowController.streamData //TODO it seems that there is an issue at the moment with streaming refreshing wrong entry if there is more than one with the same name void refresh(String name,int i) throws SQLException{ System.out.println("refresh ..."); @@ -237,9 +245,9 @@ public class DBController { stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_local WHERE titel = '"+name+"';" ); if(rs.getString(4).equals("favorite_black")){ - mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), favorite_black)); + mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_black))); }else{ - mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), favorite_border_black)); + mainWindowController.newDaten.set(i, new streamUiData(1, 1, 1, rs.getDouble(1), "1", rs.getString(2), rs.getString(3), new ImageView(favorite_border_black))); } stmt.close(); rs.close(); @@ -248,9 +256,9 @@ public class DBController { stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM film_streaming WHERE titel = '"+name+"';" ); if(rs.getString(8).equals("favorite_black")){ - mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), favorite_black)); + mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_black))); }else{ - mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), favorite_border_black)); + mainWindowController.streamData.set(i,new streamUiData(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getDouble(4), rs.getString(5), rs.getString(6), rs.getString(7), new ImageView(favorite_border_black))); } stmt.close(); rs.close(); @@ -287,7 +295,7 @@ public class DBController { } - private void checkAddEntry() throws SQLException, FileNotFoundException, IOException{ //müssen noch alphabetisch sortiert werden + private void checkAddEntry() throws SQLException, FileNotFoundException, IOException{ //TODO sort alphabetical System.out.println("checking for entrys to add to DB ..."); String[] entries = new File(mainWindowController.getPath()).list(); Statement stmt = connection.createStatement(); diff --git a/src/application/MainWindow.fxml b/src/application/MainWindow.fxml index c2aeb84..eb15ef1 100644 --- a/src/application/MainWindow.fxml +++ b/src/application/MainWindow.fxml @@ -17,10 +17,10 @@ - + - - + + @@ -29,7 +29,7 @@ - + diff --git a/src/application/MainWindowController.java b/src/application/MainWindowController.java index 6b51bc3..e15517b 100644 --- a/src/application/MainWindowController.java +++ b/src/application/MainWindowController.java @@ -182,9 +182,10 @@ public class MainWindowController { private boolean menutrue = false; //saves the position of menubtn (opened or closed) private boolean settingstrue = false; private boolean streamingSettingsTrue = false; - private String version = "0.4.0"; - private String buildNumber = "104"; - private String versionName = "glowing bucket"; + private int hashA = -2055934614; + private String version = "0.4.99"; + private String buildNumber = "110"; + private String versionName = "plasma cow (pre Release)"; private String buildURL = "https://raw.githubusercontent.com/Seil0/Project-HomeFlix/master/updates/buildNumber.txt"; private String downloadLink = "https://raw.githubusercontent.com/Seil0/Project-HomeFlix/master/updates/downloadLink.txt"; private File dir = new File(System.getProperty("user.home") + "/Documents/HomeFlix"); @@ -250,8 +251,6 @@ public class MainWindowController { private ImageView skip_next_black = new ImageView(new Image("recources/icons/ic_skip_next_black_18dp_1x.png")); private ImageView play_arrow_white = new ImageView(new Image("recources/icons/ic_play_arrow_white_18dp_1x.png")); private ImageView play_arrow_black = new ImageView(new Image("recources/icons/ic_play_arrow_black_18dp_1x.png")); - private ImageView favorite_black = new ImageView(new Image("recources/icons/ic_favorite_black_18dp_1x.png")); - private ImageView favorite_border_black = new ImageView(new Image("recources/icons/ic_favorite_border_black_18dp_1x.png")); private DirectoryChooser directoryChooser = new DirectoryChooser(); private ContextMenu menu = new ContextMenu(); private MenuItem like = new MenuItem("like"); @@ -262,7 +261,6 @@ public class MainWindowController { private apiQuery ApiQuery; DBController dbController; - //wenn menubtn clicked /** * TODO change value of Text-color change */ @@ -303,7 +301,6 @@ public class MainWindowController { System.out.println(output); input.close(); } catch (IOException e1) { - // Auto-generated catch block e1.printStackTrace(); } if(output.contains("which: no vlc")||output == ""){ @@ -335,7 +332,7 @@ public class MainWindowController { } }else if(mode.equals("streaming")){ try { - Desktop.getDesktop().browse(new URI(datPath)); //opens the streaming url in browser (other option?) + Desktop.getDesktop().browse(new URI(datPath)); //opens the streaming url in browser (TODO other option?) } catch (URISyntaxException | IOException e) { showErrorMsg(errorOpenStream, (IOException) e); } @@ -350,7 +347,7 @@ public class MainWindowController { @FXML private void openfolderbtnclicked(){ try { - Desktop.getDesktop().open(new File(getPath())); //öffnet den aktuellen Pfad + Desktop.getDesktop().open(new File(getPath())); //open path when button is clicked } catch (IOException e) { e.printStackTrace(); } @@ -393,7 +390,7 @@ public class MainWindowController { } /** - * TODO zusätzliche infos über die dateien + * TODO additional info about the "streaming.json" */ @FXML private void streamingSettingsBtnclicked(){ @@ -424,7 +421,7 @@ public class MainWindowController { addDataUI(); settingsAnchor.setVisible(false); streamingSettingsAnchor.setVisible(false); - sideMenuSlideOut(); //disables sidemenu + sideMenuSlideOut(); //disables side-menu menutrue = false; settingstrue = false; streamingSettingsTrue = false; @@ -432,7 +429,6 @@ public class MainWindowController { @FXML private void debugBtnclicked(){ - newDaten.get(selected).setImage(favorite_black); //for testing } @@ -508,7 +504,7 @@ public class MainWindowController { } - //"Main" Methode die beim start von der Klasse Main aufgerufen wird, initialiesirung der einzellnen UI-Objekte + //"Main" Method called in Main.java main() when starting, initialize some UI elements public void setMain(Main main) { Updater = new updater(this); ApiQuery = new apiQuery(this); @@ -519,15 +515,16 @@ public class MainWindowController { initActions(); System.out.println("Mode: "+mode); //TODO debugging - -// if(ratingSortType == "DESCENDING"){ //TODO not fully implemented yet + + //TODO implement sort for rating and alphabetical sort for name after new title was added +// if(ratingSortType == "DESCENDING"){ // columnRating.setSortType(TreeTableColumn.SortType.DESCENDING); // }else{ // columnRating.setSortType(TreeTableColumn.SortType.ASCENDING); // } - debugBtn.setDisable(false); //debugging btn for tests - debugBtn.setVisible(true); + debugBtn.setDisable(true); //debugging btn for tests + debugBtn.setVisible(false); tfPath.setText(getPath()); @@ -550,7 +547,7 @@ public class MainWindowController { ta1.setFont(Font.font("System", getSize())); } - //initialisierung der Tabellen für filme(beide Modi) und Streaming-Settings + //Initialize the tables (treeTableViewfilm and tableViewStreamingdata) @SuppressWarnings({ "unchecked"}) private void initTabel(){ @@ -565,31 +562,8 @@ public class MainWindowController { treeTableViewfilm.setRoot(root); treeTableViewfilm.setColumnResizePolicy( TreeTableView.CONSTRAINED_RESIZE_POLICY ); treeTableViewfilm.setShowRoot(false); - - //inhalt in Zelle schreiben -// columnTitel.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyStringWrapper(p.getValue().getValue().getTitel())); -// -// columnRating.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyObjectWrapper(p.getValue().getValue().getRating())); -// -// columnStreamUrl.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyStringWrapper(p.getValue().getValue().getStreamUrl())); -// -// columnResolution.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyStringWrapper(p.getValue().getValue().getResolution())); -// -// columnYear.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyObjectWrapper(p.getValue().getValue().getYear())); -// -// columnSeason.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyObjectWrapper(p.getValue().getValue().getSeason())); -// -// columnEpisode.setCellValueFactory((CellDataFeatures p) -> -// new ReadOnlyObjectWrapper(p.getValue().getValue().getEpisode())); - - //write content into cell (new) + //write content into cell columnTitel.setCellValueFactory(cellData -> cellData.getValue().getValue().titelProperty()); columnRating.setCellValueFactory(cellData -> cellData.getValue().getValue().imageProperty()); columnStreamUrl.setCellValueFactory(cellData -> cellData.getValue().getValue().streamUrlProperty()); @@ -599,21 +573,21 @@ public class MainWindowController { columnEpisode.setCellValueFactory(cellData -> cellData.getValue().getValue().episodeProperty().asObject()); treeTableViewfilm.getColumns().addAll(columnTitel, columnRating, columnStreamUrl, columnResolution, columnYear, columnSeason, columnEpisode); - treeTableViewfilm.getColumns().get(2).setVisible(false); //blendet die Column mit den Dateinamen aus (wichtig um sie abzuspielen) + treeTableViewfilm.getColumns().get(2).setVisible(false); //hide columnStreamUrl (column with file path important for the player) - //Changelistener für TreeTable + //Changelistener for TreeTable treeTableViewfilm.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldVal, Object newVal) { - // last = selected; //für autoplay - selected = treeTableViewfilm.getSelectionModel().getSelectedIndex(); // holt aktuelles Item + // last = selected; //for auto-play + selected = treeTableViewfilm.getSelectionModel().getSelectedIndex(); //get selected item last = selected - 1; next = selected + 1; - Name = columnTitel.getCellData(selected); // holt Namen des Aktuelle Items aus der ColumnName - datPath = columnStreamUrl.getCellData(selected); // holt den aktuellen Datei Pfad aus der ColumnDatName - ta1.setText(""); // löscht Text in ta1 - ApiQuery.startQuery(Name); // startet die api abfrage - ta1.positionCaret(0); // setzt die startposition des Cursors in ta1 + Name = columnTitel.getCellData(selected); //get name of selected item + datPath = columnStreamUrl.getCellData(selected); //get file path of selected item + ta1.setText(""); //delete text in ta1 + ApiQuery.startQuery(Name); // start api query + ta1.positionCaret(0); //set cursor position in ta1 } }); @@ -649,7 +623,7 @@ public class MainWindowController { for(int i = 0; i < filterData.size(); i++){ root.getChildren().addAll(new TreeItem(filterData.get(i))); //fügt daten zur Rootnode hinzu } - if(tfsearch.getText().equals("Notflix_glowing_cow")){ + if(tfsearch.getText().hashCode() == hashA){ setColor("000000"); applyColor(); } @@ -730,24 +704,24 @@ public class MainWindowController { void addDataUI(){ if(mode.equals("local")){ for(int i = 0; i < newDaten.size(); i++){ - root.getChildren().add(new TreeItem(newDaten.get(i))); //fügt daten zur Rootnode hinzu + root.getChildren().add(new TreeItem(newDaten.get(i))); //add data to root-node } - columnRating.setMaxWidth(80); - columnTitel.setMaxWidth(280); + columnRating.setMaxWidth(90); + columnTitel.setMaxWidth(290); treeTableViewfilm.getColumns().get(3).setVisible(false); treeTableViewfilm.getColumns().get(4).setVisible(false); treeTableViewfilm.getColumns().get(5).setVisible(false); treeTableViewfilm.getColumns().get(6).setVisible(false); }else if(mode.equals("streaming")){ for(int i = 0; i < streamData.size(); i++){ - root.getChildren().add(new TreeItem(streamData.get(i))); //fügt daten zur Rootnode hinzu + root.getChildren().add(new TreeItem(streamData.get(i))); //add data to root-node } columnTitel.setMaxWidth(150); columnResolution.setMaxWidth(65); - columnRating.setMaxWidth(52.5); - columnYear.setMaxWidth(40); - columnSeason.setMaxWidth(52.5); - columnEpisode.setMaxWidth(0); //disabled for ui size reasons + columnRating.setMaxWidth(50); + columnYear.setMaxWidth(43); + columnSeason.setMaxWidth(42); + columnEpisode.setMaxWidth(44); treeTableViewfilm.getColumns().get(3).setVisible(true); treeTableViewfilm.getColumns().get(4).setVisible(true); treeTableViewfilm.getColumns().get(5).setVisible(true); @@ -831,7 +805,7 @@ public class MainWindowController { //das solte weg kann aber hier bleiben wicht ist dass es zum selben zeitpunkt wie aply color ausgeführt wird if(mode.equals("local")){ - switchBtn.setText("streaming"); //TODO translate + switchBtn.setText("streaming"); }else if(mode.equals("streaming")){ switchBtn.setText("local"); } diff --git a/src/application/apiQuery.java b/src/application/apiQuery.java index 80aab0c..a78ea07 100644 --- a/src/application/apiQuery.java +++ b/src/application/apiQuery.java @@ -122,6 +122,7 @@ public class apiQuery{ } } catch (Exception e) { + mainWindowController.ta1.setText(e.toString()); System.out.println(e); } finally { //closes datainputStream, InputStream,Scanner if not already done