diff --git a/fmframework/src/sarsoo/fmframework/fx/controller/ControllerMain.java b/fmframework/src/sarsoo/fmframework/fx/controller/ControllerMain.java index 5c2969b..b4c6f17 100644 --- a/fmframework/src/sarsoo/fmframework/fx/controller/ControllerMain.java +++ b/fmframework/src/sarsoo/fmframework/fx/controller/ControllerMain.java @@ -43,94 +43,81 @@ import javafx.scene.layout.*; import javafx.concurrent.*; import javafx.application.Platform; +import javafx.scene.paint.Color; public class ControllerMain { @FXML - private Label labelStatsScrobblesToday; + public void initialize() { + Reference.setUserName("sarsoo"); + refresh(); + } - @FXML - private Label labelStatsUsername; - @FXML - private Label labelStatsScrobblesTotal; - - @FXML - private PieChart pieChartGenres; - - @FXML - private TabPane tabPane; - - @FXML - public void initialize() { - Reference.setUserName("sarsoo"); - - NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US); - - Service service = new Service() { - @Override - protected Task createTask() { - return new Task() { - @Override - protected Void call() throws Exception { - - String scrobblesToday = numberFormat.format(Getter.getScrobblesToday(Reference.getUserName())); - String scrobbles = numberFormat.format(Getter.getScrobbles(Reference.getUserName())); - - - TrackTab tab = new TrackTab(Getter.getLastTrack()); - - final CountDownLatch latch = new CountDownLatch(1); - Platform.runLater(new Runnable() { - @Override - public void run() { - try { - - labelStatsScrobblesToday.setText(scrobblesToday); - labelStatsUsername.setText(Reference.getUserName()); - labelStatsScrobblesTotal.setText(scrobbles); - - addTab(tab); - - refreshPieCharts(); - updateTagMenu(); - - } finally { - latch.countDown(); - } - } - }); - latch.await(); - // Keep with the background work - return null; - } - }; - } - }; - service.start(); - - } + public void refresh() { - private ArrayList tags; - public void updateTagMenu() { + Service service = new Service() { + @Override + protected Task createTask() { + return new Task() { + @Override + protected Void call() throws Exception { + NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US); + + String scrobblesToday = numberFormat.format(Getter.getScrobblesToday(Reference.getUserName())); + String scrobbles = numberFormat.format(Getter.getScrobbles(Reference.getUserName())); + + TrackTab tab = new TrackTab(Getter.getLastTrack()); + + final CountDownLatch latch = new CountDownLatch(1); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + + labelStatsScrobblesToday.setText(scrobblesToday); + labelStatsUsername.setText(Reference.getUserName()); + labelStatsScrobblesTotal.setText(scrobbles); + + addTab(tab); + + // refreshPieCharts(); + refreshTagMenu(); + + } finally { + latch.countDown(); + } + } + }); + latch.await(); + // Keep with the background work + return null; + } + }; + } + }; + service.start(); + } + + + public void refreshTagMenu() { tags = Getter.getUserTags(Reference.getUserName()); - + Collections.sort(tags); - + int counter; for (counter = 0; counter < tags.size(); counter++) { - + String name = tags.get(counter).getName().toLowerCase(); - - + // System.out.println(name); - + MenuItem item = new MenuItem(name); - + item.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { - + // TAG ITEM HANDLER SERVICE Service service = new Service() { @Override @@ -138,10 +125,10 @@ public class ControllerMain { return new Task() { @Override protected Void call() throws Exception { - - FMObjListTab tab = new FMObjListTab(Getter - .getUserTag(Reference.getUserName(), name)); - + + FMObjListTab tab = new FMObjListTab( + Getter.getUserTag(Reference.getUserName(), name)); + final CountDownLatch latch = new CountDownLatch(1); Platform.runLater(new Runnable() { @Override @@ -163,270 +150,118 @@ public class ControllerMain { service.start(); } }); - + menuTag.getItems().add(item); } } - public void updateGenrePieChart() { - String[] names = { "rock", "rap", "classic rock", "pop punk", "electronic", "metal", "grime", "classic rap", - "indie", "jazz", "blues", "core" }; - - ObservableList pieChartData = FXCollections.observableArrayList( - - new PieChart.Data("rock", 5), new PieChart.Data("rock", 5), new PieChart.Data("rock", 5)); - pieChartGenres = new PieChart(pieChartData); - - } - - @FXML - protected void handleLookupAlbum(ActionEvent event) throws IOException { + public void refreshPieCharts() { Service service = new Service() { @Override protected Task createTask() { return new Task() { @Override protected Void call() throws Exception { - - Album album = sarsoo.fmframework.jframe.Getter.getAlbum(); - - if (album != null) { - AlbumTab tab = new AlbumTab(album); - - final CountDownLatch latch = new CountDownLatch(1); - Platform.runLater(new Runnable() { - @Override - public void run() { - try { - tabPane.getTabs().add(tab); - } finally { - latch.countDown(); - } - } - }); - latch.await(); - } - // Keep with the background work - return null; - } - }; - } - }; - service.start(); - - } - - @FXML - protected void handleLookupArtist(ActionEvent event) throws IOException { - Service service = new Service() { - @Override - protected Task createTask() { - return new Task() { - @Override - protected Void call() throws Exception { - - Artist artist = sarsoo.fmframework.jframe.Getter.getArtist(); - - if (artist != null) { - ArtistTab tab = new ArtistTab(artist); - - final CountDownLatch latch = new CountDownLatch(1); - Platform.runLater(new Runnable() { - @Override - public void run() { - try { - tabPane.getTabs().add(tab); - } finally { - latch.countDown(); - } - } - }); - latch.await(); - } - // Keep with the background work - return null; - } - }; - } - }; - service.start(); - - // tabPane.getTabs().add(new ArtistTab(Getter.getArtist())); - } - - @FXML - protected void handleLookupTrack(ActionEvent event) throws IOException { - - Service service = new Service() { - @Override - protected Task createTask() { - return new Task() { - @Override - protected Void call() throws Exception { - - Track track = sarsoo.fmframework.jframe.Getter.getTrack(); - - if (track != null) { - TrackTab tab = new TrackTab(track); - - final CountDownLatch latch = new CountDownLatch(1); - Platform.runLater(new Runnable() { - @Override - public void run() { - try { - tabPane.getTabs().add(tab); - } finally { - latch.countDown(); - } - } - }); - latch.await(); - } - // Keep with the background work - return null; - } - }; - } - }; - service.start(); - } - - @FXML - protected void handleScrobble(ActionEvent event) throws IOException { - Album album = sarsoo.fmframework.jframe.Getter.getAlbum(); - if (album != null) { - Track track = sarsoo.fmframework.jframe.Getter.getTrack(album); - - } - } - - @FXML - private Menu menuTag; - - // @FXML - // protected void handleTagClick(ActionEvent event) throws IOException { - // // System.out.println("clicked"); - // - // if (tags == null) { - // // System.out.println("list null"); - // - // tags = Getter.getUserTags(Reference.getUserName()); - // - // int counter; - // for (counter = 0; counter < tags.size(); counter++) { - // - // String name = tags.get(counter).getName().toLowerCase(); - // - // // System.out.println(name); - // - // MenuItem item = new MenuItem(name); - // - // item.setOnAction(new EventHandler() { - // @Override - // public void handle(ActionEvent e) { - // try { - // FMObjListTab tab = new - // FMObjListTab(Getter.getUserTag(Reference.getUserName(), name)); - // - // tabPane.getTabs().add(tab); - // System.out.println("tab added"); - // } catch (IOException e1) { - // e1.printStackTrace(); - // } - // } - // }); - // - // menuTag.getItems().add(item); - // } - // } - // } - - @FXML - protected void handleKeyShortcut(KeyEvent event) throws IOException { - - if (event.getCode() == KeyCode.F5) { - refresh(); - // System.out.println("refreshed"); - } - } - - public void refresh() { - NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US); - - Service service = new Service() { - @Override - protected Task createTask() { - return new Task() { - @Override - protected Void call() throws Exception { - - String scrobblesToday = numberFormat.format(Getter.getScrobblesToday(Reference.getUserName())); - String scrobbles = numberFormat.format(Getter.getScrobbles(Reference.getUserName())); - tags = Getter.getUserTags(Reference.getUserName()); - + + int total = Getter.getScrobbles(Reference.getUserName()); + + FMObjList rap = Getter.getUserTag(Reference.getUserName(), "rap"); + FMObjList classicRap = Getter.getUserTag(Reference.getUserName(), "classic rap"); + FMObjList grime = Getter.getUserTag(Reference.getUserName(), "grime"); + + FMObjList classicRock = Getter.getUserTag(Reference.getUserName(), "classic rock"); + FMObjList popPunk = Getter.getUserTag(Reference.getUserName(), "pop punk"); + FMObjList electronic = Getter.getUserTag(Reference.getUserName(), "electronic"); + FMObjList metal = Getter.getUserTag(Reference.getUserName(), "metal"); + FMObjList indie = Getter.getUserTag(Reference.getUserName(), "indie"); + FMObjList rock = Getter.getUserTag(Reference.getUserName(), "rock"); + FMObjList jazz = Getter.getUserTag(Reference.getUserName(), "jazz"); + FMObjList blues = Getter.getUserTag(Reference.getUserName(), "blues"); + FMObjList core = Getter.getUserTag(Reference.getUserName(), "core"); + FMObjList rnb = Getter.getUserTag(Reference.getUserName(), "rnb"); + FMObjList soulFunk = Getter.getUserTag(Reference.getUserName(), "soulfunk"); + + int rapTotal = rap.getTotalUserScrobbles() - classicRap.getTotalUserScrobbles() + - grime.getTotalUserScrobbles(); + + ObservableList rapData = FXCollections.observableArrayList( + new PieChart.Data("rap", rapTotal), + new PieChart.Data("classic rap", classicRap.getTotalUserScrobbles()), + new PieChart.Data("grime", grime.getTotalUserScrobbles())); + + Collections.sort(rapData, new Comparator() { + + @Override + public int compare(Data arg0, Data arg1) { + return (int) (arg1.getPieValue() - arg0.getPieValue()); + } + }); + + int other = total - rap.getTotalUserScrobbles(); + + ObservableList rapTotalData = FXCollections.observableArrayList( + new PieChart.Data("rap", rapTotal), + new PieChart.Data("classic rap", classicRap.getTotalUserScrobbles()), + new PieChart.Data("grime", grime.getTotalUserScrobbles())); + + Collections.sort(rapTotalData, new Comparator() { + + @Override + public int compare(Data arg0, Data arg1) { + return (int) (arg1.getPieValue() - arg0.getPieValue()); + } + }); + + rapTotalData.add(new PieChart.Data("other", other)); + + int totalOther = total - rap.getTotalUserScrobbles() - classicRock.getTotalUserScrobbles() + - popPunk.getTotalUserScrobbles() - electronic.getTotalUserScrobbles() + - metal.getTotalUserScrobbles() - indie.getTotalUserScrobbles() + - rock.getTotalUserScrobbles() - jazz.getTotalUserScrobbles() + - blues.getTotalUserScrobbles() - core.getTotalUserScrobbles() + - rnb.getTotalUserScrobbles(); + + ObservableList genreData = FXCollections.observableArrayList( + new PieChart.Data(String.format("rap %.2f%%", rapTotal*100/total), rapTotal), + new PieChart.Data("classic rap", classicRap.getTotalUserScrobbles()), + new PieChart.Data("grime", grime.getTotalUserScrobbles()), + + new PieChart.Data("classic rock", classicRock.getTotalUserScrobbles()), + new PieChart.Data("pop punk", popPunk.getTotalUserScrobbles()), + new PieChart.Data("electronic", electronic.getTotalUserScrobbles()), + new PieChart.Data("metal", metal.getTotalUserScrobbles()), + new PieChart.Data("indie", indie.getTotalUserScrobbles()), + new PieChart.Data("rock", rock.getTotalUserScrobbles()), + new PieChart.Data("jazz", jazz.getTotalUserScrobbles()), + new PieChart.Data("blues", blues.getTotalUserScrobbles()), + new PieChart.Data("core", core.getTotalUserScrobbles()), + new PieChart.Data("soulfunk", soulFunk.getTotalUserScrobbles()), + new PieChart.Data("rnb", rnb.getTotalUserScrobbles())); + + Collections.sort(genreData, new Comparator() { + + @Override + public int compare(Data arg0, Data arg1) { + return (int) (arg1.getPieValue() - arg0.getPieValue()); + } + }); + + + genreData.add(new PieChart.Data("other", totalOther)); + final CountDownLatch latch = new CountDownLatch(1); Platform.runLater(new Runnable() { @Override public void run() { try { - - labelStatsScrobblesToday.setText(scrobblesToday); - labelStatsUsername.setText(Reference.getUserName()); - labelStatsScrobblesTotal.setText(scrobbles); - -// refreshPieCharts(); - menuTag.getItems().clear(); - - int counter; - for (counter = 0; counter < tags.size(); counter++) { - - String name = tags.get(counter).getName().toLowerCase(); - - // System.out.println(name); - - MenuItem item = new MenuItem(name); - - item.setOnAction(new EventHandler() { - @Override - public void handle(ActionEvent e) { - - // TAG ITEM HANDLER SERVICE - Service service = new Service() { - @Override - protected Task createTask() { - return new Task() { - @Override - protected Void call() throws Exception { - - FMObjListTab tab = new FMObjListTab(Getter - .getUserTag(Reference.getUserName(), name)); - - final CountDownLatch latch = new CountDownLatch(1); - Platform.runLater(new Runnable() { - @Override - public void run() { - try { - tabPane.getTabs().add(tab); - } finally { - latch.countDown(); - } - } - }); - latch.await(); - // Keep with the background work - return null; - } - }; - } - }; - service.start(); - } - }); - - menuTag.getItems().add(item); - } - + pieChartRap.setData(rapData); + + pieChartRapTotal.setData(rapTotalData); + + pieChartGenres.setData(genreData); + + accordionCharts.setExpandedPane(titledPaneGenres); } finally { latch.countDown(); } @@ -445,10 +280,221 @@ public class ControllerMain { public void addTab(Tab tab) { tabPane.getTabs().add(tab); SingleSelectionModel selectionModel = tabPane.getSelectionModel(); - + selectionModel.select(tab); } + + @FXML + protected void handleKeyShortcut(KeyEvent event) throws IOException { + + if (event.getCode() == KeyCode.F5) { + refresh(); + } + } + + + @FXML + protected void handleLookupAlbum(ActionEvent event) throws IOException { + Service service = new Service() { + @Override + protected Task createTask() { + return new Task() { + @Override + protected Void call() throws Exception { + + Album album = sarsoo.fmframework.jframe.Getter.getAlbum(); + + if (album != null) { + AlbumTab tab = new AlbumTab(album); + + final CountDownLatch latch = new CountDownLatch(1); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + tabPane.getTabs().add(tab); + } finally { + latch.countDown(); + } + } + }); + latch.await(); + } + // Keep with the background work + return null; + } + }; + } + }; + service.start(); + + } + + + @FXML + protected void handleLookupArtist(ActionEvent event) throws IOException { + Service service = new Service() { + @Override + protected Task createTask() { + return new Task() { + @Override + protected Void call() throws Exception { + + Artist artist = sarsoo.fmframework.jframe.Getter.getArtist(); + + if (artist != null) { + ArtistTab tab = new ArtistTab(artist); + + final CountDownLatch latch = new CountDownLatch(1); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + tabPane.getTabs().add(tab); + } finally { + latch.countDown(); + } + } + }); + latch.await(); + } + // Keep with the background work + return null; + } + }; + } + }; + service.start(); + } + + + @FXML + protected void handleLookupTrack(ActionEvent event) throws IOException { + + Service service = new Service() { + @Override + protected Task createTask() { + return new Task() { + @Override + protected Void call() throws Exception { + + Track track = sarsoo.fmframework.jframe.Getter.getTrack(); + + if (track != null) { + TrackTab tab = new TrackTab(track); + + final CountDownLatch latch = new CountDownLatch(1); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + tabPane.getTabs().add(tab); + } finally { + latch.countDown(); + } + } + }); + latch.await(); + } + // Keep with the background work + return null; + } + }; + } + }; + service.start(); + } + + + @FXML + protected void handleCurrentTrack(ActionEvent event) throws IOException { + Service service = new Service() { + @Override + protected Task createTask() { + return new Task() { + @Override + protected Void call() throws Exception { + + Track track = Getter.getLastTrack(); + + if (track != null) { + TrackTab tab = new TrackTab(track); + + final CountDownLatch latch = new CountDownLatch(1); + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + tabPane.getTabs().add(tab); + } finally { + latch.countDown(); + } + } + }); + latch.await(); + } + // Keep with the background work + return null; + } + }; + } + }; + service.start(); + + } + + + @FXML + protected void handleRefreshPieChart(ActionEvent event) throws IOException { + + refreshPieCharts(); + + } + + + @FXML + protected void handleCreateList(ActionEvent event) { + + try { + Tab tab = new FMObjListTab(); + addTab(tab); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + + @FXML + protected void handleScrobble(ActionEvent event) throws IOException { + Album album = sarsoo.fmframework.jframe.Getter.getAlbum(); + if (album != null) { + Track track = sarsoo.fmframework.jframe.Getter.getTrack(album); + + } + } + + private ArrayList tags; + + @FXML + private Label labelStatsScrobblesToday; + + @FXML + private Label labelStatsUsername; + + @FXML + private Label labelStatsScrobblesTotal; + + @FXML + private PieChart pieChartGenres; + + @FXML + private TabPane tabPane; + + @FXML + private Menu menuTag; + @FXML private PieChart pieChartRap; @@ -463,148 +509,8 @@ public class ControllerMain { @FXML private TitledPane titledPaneRap; - - @FXML - protected void handleRefreshPieChart(ActionEvent event) throws IOException { - - refreshPieCharts(); - - } - - public void refreshPieCharts() { - Service service = new Service() { - @Override - protected Task createTask() { - return new Task() { - @Override - protected Void call() throws Exception { - - int total = Getter.getScrobbles(Reference.getUserName()); - - FMObjList rap = Getter.getUserTag(Reference.getUserName(), "rap"); - FMObjList classicRap = Getter.getUserTag(Reference.getUserName(), "classic rap"); - FMObjList grime = Getter.getUserTag(Reference.getUserName(), "grime"); - - FMObjList classicRock = Getter.getUserTag(Reference.getUserName(), "classic rock"); - FMObjList popPunk = Getter.getUserTag(Reference.getUserName(), "pop punk"); - FMObjList electronic = Getter.getUserTag(Reference.getUserName(), "electronic"); - FMObjList metal = Getter.getUserTag(Reference.getUserName(), "metal"); - FMObjList indie = Getter.getUserTag(Reference.getUserName(), "indie"); - FMObjList rock = Getter.getUserTag(Reference.getUserName(), "rock"); - FMObjList jazz = Getter.getUserTag(Reference.getUserName(), "jazz"); - FMObjList blues = Getter.getUserTag(Reference.getUserName(), "blues"); - FMObjList core = Getter.getUserTag(Reference.getUserName(), "core"); - FMObjList rnb = Getter.getUserTag(Reference.getUserName(), "rnb"); - - int rapTotal = rap.getTotalUserScrobbles() - classicRap.getTotalUserScrobbles() - - grime.getTotalUserScrobbles(); - - ObservableList rapData = FXCollections.observableArrayList( - new PieChart.Data("rap", rapTotal), - new PieChart.Data("classic rap", classicRap.getTotalUserScrobbles()), - new PieChart.Data("grime", grime.getTotalUserScrobbles())); - - Collections.sort(rapData, new Comparator() { - - @Override - public int compare(Data arg0, Data arg1) { - return (int) (arg1.getPieValue() - arg0.getPieValue()); - } - }); - - - int other = total - rap.getTotalUserScrobbles(); - - ObservableList rapTotalData = FXCollections.observableArrayList( - new PieChart.Data("rap", rapTotal), - new PieChart.Data("classic rap", classicRap.getTotalUserScrobbles()), - new PieChart.Data("grime", grime.getTotalUserScrobbles())); - - Collections.sort(rapTotalData, new Comparator() { - - @Override - public int compare(Data arg0, Data arg1) { - return (int) (arg1.getPieValue() - arg0.getPieValue()); - } - }); - - rapTotalData.add(new PieChart.Data("other", other)); - - int totalOther = total - rap.getTotalUserScrobbles() - - classicRock.getTotalUserScrobbles() - - popPunk.getTotalUserScrobbles() - - electronic.getTotalUserScrobbles() - - metal.getTotalUserScrobbles() - - indie.getTotalUserScrobbles() - - rock.getTotalUserScrobbles() - - jazz.getTotalUserScrobbles() - - blues.getTotalUserScrobbles() - - core.getTotalUserScrobbles() - - rnb.getTotalUserScrobbles(); - - ObservableList genreData = FXCollections.observableArrayList( - new PieChart.Data("rap", rapTotal), - new PieChart.Data("classic rap", classicRap.getTotalUserScrobbles()), - new PieChart.Data("grime", grime.getTotalUserScrobbles()), - - new PieChart.Data("classic rock", classicRock.getTotalUserScrobbles()), - new PieChart.Data("pop punk", popPunk.getTotalUserScrobbles()), - new PieChart.Data("electronic", electronic.getTotalUserScrobbles()), - new PieChart.Data("metal", metal.getTotalUserScrobbles()), - new PieChart.Data("indie", indie.getTotalUserScrobbles()), - new PieChart.Data("rock", rock.getTotalUserScrobbles()), - new PieChart.Data("jazz", jazz.getTotalUserScrobbles()), - new PieChart.Data("blues", blues.getTotalUserScrobbles()), - new PieChart.Data("core", core.getTotalUserScrobbles()), - new PieChart.Data("rnb", rnb.getTotalUserScrobbles())); - - Collections.sort(genreData, new Comparator() { - - @Override - public int compare(Data arg0, Data arg1) { - return (int) (arg1.getPieValue() - arg0.getPieValue()); - } - }); - - genreData.add(new PieChart.Data("other", totalOther)); - - final CountDownLatch latch = new CountDownLatch(1); - Platform.runLater(new Runnable() { - @Override - public void run() { - try { - pieChartRap.setData(rapData); - - pieChartRapTotal.setData(rapTotalData); - - pieChartGenres.setData(genreData); - - accordionCharts.setExpandedPane(titledPaneRap); - } finally { - latch.countDown(); - } - } - }); - latch.await(); - // Keep with the background work - return null; - } - }; - } - }; - service.start(); - } @FXML - protected void handleCreateList(ActionEvent event) { - - try { - Tab tab = new FMObjListTab(); - addTab(tab); - } catch (IOException e) { - e.printStackTrace(); - } - - } + private StackPane stackViewGenres; } diff --git a/fmframework/src/sarsoo/fmframework/fx/ui/AlbumPane.fxml b/fmframework/src/sarsoo/fmframework/fx/ui/AlbumPane.fxml index 10d9f93..0abbcc7 100644 --- a/fmframework/src/sarsoo/fmframework/fx/ui/AlbumPane.fxml +++ b/fmframework/src/sarsoo/fmframework/fx/ui/AlbumPane.fxml @@ -28,36 +28,60 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fmframework/src/sarsoo/fmframework/fx/ui/ArtistPane.fxml b/fmframework/src/sarsoo/fmframework/fx/ui/ArtistPane.fxml index 6c9007c..298aee3 100644 --- a/fmframework/src/sarsoo/fmframework/fx/ui/ArtistPane.fxml +++ b/fmframework/src/sarsoo/fmframework/fx/ui/ArtistPane.fxml @@ -9,9 +9,9 @@ - +
- + @@ -20,38 +20,58 @@ - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fmframework/src/sarsoo/fmframework/fx/ui/TrackPane.fxml b/fmframework/src/sarsoo/fmframework/fx/ui/TrackPane.fxml index a877dd3..b01abe4 100644 --- a/fmframework/src/sarsoo/fmframework/fx/ui/TrackPane.fxml +++ b/fmframework/src/sarsoo/fmframework/fx/ui/TrackPane.fxml @@ -29,7 +29,7 @@ -