From 5b8f5ddd363b5ce3ec2a72e084af0bc60bd5c041 Mon Sep 17 00:00:00 2001 From: mkpaz Date: Sun, 4 Sep 2022 19:48:32 +0400 Subject: [PATCH] Improve Music Player showcase Major visual lift-up --- .../sampler/page/showcase/ShowcasePage.java | 4 +- .../showcase/filemanager/FileManagerPage.java | 12 +- .../showcase/filemanager/RightClickMenu.java | 2 +- .../page/showcase/filemanager/Utils.java | 2 - .../showcase/filemanager/file-manager.css | 16 +-- .../page/showcase/musicplayer/MediaFile.java | 26 +++-- .../page/showcase/musicplayer/Model.java | 2 +- .../showcase/musicplayer/MusicPlayerPage.java | 68 ++++++------ .../{Player.java => PlayerPane.java} | 101 ++++++++++------- .../showcase/musicplayer/PlayerScreen.java | 51 +++++++++ .../{Playlist.java => PlaylistPane.java} | 77 +++++++++---- .../showcase/musicplayer/StartScreen.java | 105 ++++++++++++++++++ .../page/showcase/musicplayer/Utils.java | 8 -- .../showcase/musicplayer/music-player.css | 58 +++++++--- .../atlantafx/sampler/util/JColorUtils.java | 8 ++ .../assets/styles/scss/general/_root.scss | 4 + sampler/src/main/resources/images/vinyl.jpg | Bin 95946 -> 0 bytes styles/src/settings/_icons.scss | 1 + 18 files changed, 398 insertions(+), 147 deletions(-) rename sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/{Player.java => PlayerPane.java} (81%) create mode 100644 sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerScreen.java rename sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/{Playlist.java => PlaylistPane.java} (73%) create mode 100644 sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/StartScreen.java delete mode 100644 sampler/src/main/resources/images/vinyl.jpg diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/ShowcasePage.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/ShowcasePage.java index 7fb1efa..f62b8b1 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/ShowcasePage.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/ShowcasePage.java @@ -8,9 +8,9 @@ import javafx.geometry.Pos; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Hyperlink; -import javafx.scene.layout.AnchorPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; +import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.stage.StageStyle; import org.kordamp.ikonli.feather.Feather; @@ -21,7 +21,7 @@ import static atlantafx.base.theme.Styles.ACCENT; public abstract class ShowcasePage extends AbstractPage { protected static final PseudoClass SHOWCASE_MODE = PseudoClass.getPseudoClass("showcase-mode"); - protected final AnchorPane showcase = new AnchorPane(); + protected final StackPane showcase = new StackPane(); protected final HBox expandBox = new HBox(10); protected final HBox collapseBox = new HBox(10); diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/FileManagerPage.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/FileManagerPage.java index b14bfa6..42aa96b 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/FileManagerPage.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/FileManagerPage.java @@ -7,10 +7,12 @@ import atlantafx.base.theme.Tweaks; import atlantafx.sampler.page.showcase.ShowcasePage; import atlantafx.sampler.util.Containers; import javafx.geometry.Insets; +import javafx.geometry.Pos; import javafx.scene.control.*; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.util.Callback; import org.kordamp.ikonli.feather.Feather; @@ -111,18 +113,22 @@ public class FileManagerPage extends ShowcasePage { (obs, old, val) -> splitPane.setDividerPosition(0, 200 / splitPane.getWidth()) ); + var aboutBox = new HBox(new Text("Simple file manager. You can traverse through the file system and open files via default system application.")); + aboutBox.setPadding(new Insets(5, 0, 5, 0)); + aboutBox.getStyleClass().add("about"); + var creditsBox = new HBox(5, - new Spacer(), - new Text("Inspired by"), + new Text("Inspired by ©"), hyperlink("Gnome Files", URI.create("https://gitlab.gnome.org/GNOME/nautilus")) ); creditsBox.getStyleClass().add("credits"); + creditsBox.setAlignment(Pos.CENTER_RIGHT); creditsBox.setPadding(new Insets(5, 0, 5, 0)); var root = new BorderPane(); root.getStyleClass().add("file-manager-showcase"); root.getStylesheets().add(STYLESHEET_URL); - root.setTop(topBar); + root.setTop(new VBox(aboutBox, topBar)); root.setCenter(splitPane); root.setBottom(creditsBox); diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/RightClickMenu.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/RightClickMenu.java index 93ced24..88e24eb 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/RightClickMenu.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/RightClickMenu.java @@ -9,7 +9,7 @@ import javafx.scene.input.KeyCodeCombination; import static javafx.scene.input.KeyCombination.CONTROL_DOWN; -public class RightClickMenu extends ContextMenu { +final class RightClickMenu extends ContextMenu { public RightClickMenu() { super(); diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/Utils.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/Utils.java index 7858876..4f3a692 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/Utils.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/Utils.java @@ -39,8 +39,6 @@ final class Utils { } } - - public static void openFile(Path path) { if (Desktop.isDesktopSupported()) { new Thread(() -> { diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/file-manager.css b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/file-manager.css index e7fc01e..ee136b5 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/file-manager.css +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/filemanager/file-manager.css @@ -3,6 +3,14 @@ .file-manager-showcase .bookmark-list { -fx-border-width: 0 0 1 1; } +.file-manager-showcase .bookmark-list .ikonli-font-icon { + -fx-icon-size: 18px; +} + +.file-manager-showcase .tool-bar { + -fx-background-insets: 0, 1; +} + .file-manager-showcase .table-directory-view .table-view { -color-header-bg: -color-bg-default; -color-cell-bg-selected: -color-accent-emphasis; @@ -10,16 +18,8 @@ -fx-border-width: 0 1 1 0; } -.file-manager-showcase .tool-bar { - -fx-background-insets: 0, 1; -} - /* setting opacity directly to the .table-cell or .table-row-cell leads to incorrect table row height calculation #javafx-bug */ .file-manager-showcase .table-row-cell:hidden >.table-cell > * { -fx-opacity: 0.6; } - -.file-manager-showcase .bookmark-list .ikonli-font-icon { - -fx-icon-size: 18px; -} diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MediaFile.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MediaFile.java index 3ee4201..73a8508 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MediaFile.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MediaFile.java @@ -32,16 +32,17 @@ record MediaFile(File file) { // MediaPlayer and that player has transitioned to Status.READY status. mediaPlayer.setOnReady(() -> { Map metadata = media.getMetadata(); - callback.accept(METADATA_CACHE.computeIfAbsent(file.getAbsolutePath(), k -> - // clone everything to make sure media player will be garbage collected - new Metadata( - new String(getTag(metadata, "title", String.class, NO_TITLE)), - copyImage(getTag(metadata, "image", Image.class, NO_IMAGE)), - new String(getTag(metadata, "artist", String.class, NO_ARTIST)), - new String(getTag(metadata, "album", String.class, NO_ALBUM)), - media.getDuration().toMillis() - )) - ); + callback.accept(METADATA_CACHE.computeIfAbsent(file.getAbsolutePath(), k -> { + var image = getTag(metadata, "image", Image.class, null); + // clone everything to make sure media player will be garbage collected + return new Metadata( + new String(getTag(metadata, "title", String.class, NO_TITLE)), + image != null ? copyImage(image) : null, + new String(getTag(metadata, "artist", String.class, NO_ARTIST)), + new String(getTag(metadata, "album", String.class, NO_ALBUM)), + media.getDuration().toMillis() + ); + })); mediaPlayer.dispose(); }); @@ -63,6 +64,11 @@ record MediaFile(File file) { static final Image NO_IMAGE = new Image( Resources.getResourceAsStream("images/no-image.png"), 150, 150, true, false ); + + static final Image NO_IMAGE_ALT = new Image( + Resources.getResourceAsStream("images/papirus/mimetypes/audio-mp3.png"), 150, 150, true, false + ); + static final String NO_TITLE = "Unknown title"; static final String NO_ARTIST = "Unknown artist"; static final String NO_ALBUM = "Unknown album"; diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Model.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Model.java index 353788d..4a18a15 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Model.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Model.java @@ -9,7 +9,7 @@ import javafx.scene.paint.Color; import java.util.Objects; -class Model { +final class Model { private final ObservableList playlist = FXCollections.observableArrayList(); private final IntegerProperty playlistIndex = new SimpleIntegerProperty(); diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MusicPlayerPage.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MusicPlayerPage.java index edfb60c..eee3e4a 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MusicPlayerPage.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/MusicPlayerPage.java @@ -1,24 +1,27 @@ /* SPDX-License-Identifier: MIT */ package atlantafx.sampler.page.showcase.musicplayer; -import atlantafx.sampler.Resources; import atlantafx.sampler.page.showcase.ShowcasePage; -import atlantafx.sampler.util.Containers; import javafx.collections.ListChangeListener; import javafx.geometry.Insets; -import javafx.scene.control.SplitPane; -import javafx.scene.image.Image; -import javafx.scene.layout.*; +import javafx.geometry.Pos; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.HBox; +import javafx.scene.text.Text; +import java.net.URI; import java.util.Objects; +import java.util.Set; + +import static atlantafx.sampler.util.Controls.hyperlink; public class MusicPlayerPage extends ShowcasePage { public static final String NAME = "Music Player"; - public static final double BACKGROUND_OPACITY = 0.1; + public static final double BACKGROUND_OPACITY = 0.2; + public static final Set SUPPORTED_MEDIA_TYPES = Set.of("mp3"); private static final String STYLESHEET_URL = Objects.requireNonNull( MusicPlayerPage.class.getResource("music-player.css")).toExternalForm(); - private static final Image PLUG_IMAGE = new Image(Resources.getResourceAsStream("images/vinyl.jpg")); @Override public String getName() { return NAME; } @@ -31,43 +34,40 @@ public class MusicPlayerPage extends ShowcasePage { } private void createView() { - var player = new Player(model); - player.setVisible(false); + var startScreen = new StartScreen(model); + var playerScreen = new PlayerScreen(model); - BackgroundImage backgroundImage = new BackgroundImage( - PLUG_IMAGE, - BackgroundRepeat.REPEAT, - BackgroundRepeat.REPEAT, - BackgroundPosition.DEFAULT, - BackgroundSize.DEFAULT + var aboutBox = new HBox(new Text("Simple music player that able to play MP3 files.")); + aboutBox.setPadding(new Insets(5, 0, 5, 0)); + aboutBox.getStyleClass().add("about"); + + var creditsBox = new HBox(5, + new Text("Inspired by ©"), + hyperlink("Amberol", URI.create("https://gitlab.gnome.org/World/amberol")) ); - var plug = new AnchorPane(); - plug.setBackground(new Background(backgroundImage)); - plug.setOpacity(0.5); - plug.setMouseTransparent(false); + creditsBox.getStyleClass().add("credits"); + creditsBox.setAlignment(Pos.CENTER_RIGHT); + creditsBox.setPadding(new Insets(5, 0, 5, 0)); + + // ~ + + var root = new BorderPane(); + root.setCenter(startScreen); + root.setTop(aboutBox); + root.setBottom(creditsBox); + + root.getStylesheets().add(STYLESHEET_URL); + root.getStyleClass().add("music-player-showcase"); - var playerStack = new StackPane(player, plug); model.playlist().addListener((ListChangeListener) c -> { if (model.playlist().size() > 0) { - player.setVisible(true); - plug.setVisible(false); - player.toFront(); + root.setCenter(playerScreen); } else { - player.setVisible(false); - plug.setVisible(true); - plug.toFront(); + root.setCenter(startScreen); } }); - var playlist = new Playlist(model); - - var root = new SplitPane(); - root.getStylesheets().add(STYLESHEET_URL); - root.getStyleClass().add("music-player-showcase"); - root.getItems().setAll(playerStack, playlist); - showcase.getChildren().setAll(root); - Containers.setAnchors(root, Insets.EMPTY); } @Override diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Player.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerPane.java similarity index 81% rename from sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Player.java rename to sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerPane.java index a1579c1..0d51a3e 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Player.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerPane.java @@ -7,16 +7,16 @@ import javafx.beans.InvalidationListener; import javafx.beans.binding.Bindings; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; -import javafx.geometry.Insets; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.Tooltip; import javafx.scene.image.Image; -import javafx.scene.layout.*; +import javafx.scene.layout.HBox; +import javafx.scene.layout.StackPane; +import javafx.scene.layout.VBox; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; -import javafx.scene.paint.Color; import javafx.scene.paint.ImagePattern; import javafx.scene.shape.Circle; import javafx.scene.shape.Rectangle; @@ -26,9 +26,9 @@ import org.kordamp.ikonli.javafx.FontIcon; import static atlantafx.base.controls.Popover.ArrowLocation; import static atlantafx.base.theme.Styles.*; import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.*; -import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.BACKGROUND_OPACITY; import static atlantafx.sampler.page.showcase.musicplayer.Utils.formatDuration; import static atlantafx.sampler.page.showcase.musicplayer.Utils.getDominantColor; +import static java.lang.Double.MAX_VALUE; import static javafx.geometry.Orientation.VERTICAL; import static javafx.geometry.Pos.CENTER; import static org.kordamp.ikonli.material2.Material2AL.CLEAR_ALL; @@ -37,30 +37,53 @@ import static org.kordamp.ikonli.material2.Material2MZ.*; import static org.kordamp.ikonli.material2.Material2OutlinedAL.FAST_FORWARD; import static org.kordamp.ikonli.material2.Material2OutlinedAL.FAST_REWIND; -final class Player extends VBox { +final class PlayerPane extends VBox { private static final int PANEL_MAX_WIDTH = 220; + private final Model model; private final ObjectProperty currentPlayer = new SimpleObjectProperty<>(); - public Player(Model model) { - Rectangle coverImage = new Rectangle(0, 0, 150, 150); + private Rectangle coverImage; + private Label trackTitle; + private Label trackArtist; + private Label trackAlbum; + + private FontIcon playIcon; + private Button playBtn; + + private Slider timeSlider; + private Slider volumeSlider; + private Label currentTimeLabel; + private Label endTimeLabel; + + public PlayerPane(Model model) { + super(); + + this.model = model; + + createView(); + init(); + } + + private void createView() { + coverImage = new Rectangle(0, 0, 150, 150); coverImage.setArcWidth(20.0); coverImage.setArcHeight(20.0); coverImage.setFill(new ImagePattern(NO_IMAGE)); - var trackTitle = new Label(NO_TITLE); - trackTitle.setAlignment(CENTER); - trackTitle.setMaxWidth(Double.MAX_VALUE); + trackTitle = new Label(NO_TITLE); trackTitle.getStyleClass().add(TITLE_3); + trackTitle.setAlignment(CENTER); + trackTitle.setMaxWidth(MAX_VALUE); - var trackArtist = new Label(NO_ARTIST); + trackArtist = new Label(NO_ARTIST); trackArtist.setAlignment(CENTER); - trackArtist.setMaxWidth(Double.MAX_VALUE); + trackArtist.setMaxWidth(MAX_VALUE); - var trackAlbum = new Label(NO_ALBUM); + trackAlbum = new Label(NO_ALBUM); trackAlbum.setAlignment(CENTER); - trackAlbum.setMaxWidth(Double.MAX_VALUE); + trackAlbum.setMaxWidth(MAX_VALUE); // == Media controls == @@ -71,11 +94,10 @@ final class Player extends VBox { prevBtn.disableProperty().bind(model.canGoBackProperty().not()); prevBtn.setOnAction(e -> model.playPrevious()); - var playIcon = new FontIcon(PLAY_ARROW); - playIcon.setIconSize(32); + playIcon = new FontIcon(PLAY_ARROW); - var playBtn = new Button("", playIcon); - playBtn.getStyleClass().addAll(BUTTON_CIRCLE); + playBtn = new Button("", playIcon); + playBtn.getStyleClass().addAll("play", BUTTON_CIRCLE); playBtn.setShape(new Circle(50)); var nextBtn = new Button("", new FontIcon(FAST_FORWARD)); @@ -86,20 +108,21 @@ final class Player extends VBox { nextBtn.setTooltip(new Tooltip("Next")); var mediaControls = new HBox(20); + mediaControls.getStyleClass().add("media-controls"); mediaControls.getChildren().setAll(prevBtn, playBtn, nextBtn); mediaControls.setAlignment(CENTER); // == Time controls == - var timeSlider = new Slider(0, 1, 0); - timeSlider.setMaxWidth(Double.MAX_VALUE); + timeSlider = new Slider(0, 1, 0); + timeSlider.getStyleClass().add("time-slider"); timeSlider.setMinWidth(PANEL_MAX_WIDTH); timeSlider.setMaxWidth(PANEL_MAX_WIDTH); - var currentTimeLabel = new Label("0.0"); + currentTimeLabel = new Label("0.0"); currentTimeLabel.getStyleClass().add(TEXT_SMALL); - var endTimeLabel = new Label("5.0"); + endTimeLabel = new Label("5.0"); endTimeLabel.getStyleClass().add(TEXT_SMALL); var timeMarkersBox = new HBox(5); @@ -120,7 +143,7 @@ final class Player extends VBox { shuffleBtn.setTooltip(new Tooltip("Shuffle")); shuffleBtn.setOnAction(e -> model.shuffle()); - var volumeSlider = new Slider(0, 1, 0.75); + volumeSlider = new Slider(0, 1, 0.75); volumeSlider.setOrientation(VERTICAL); var volumeBar = new VBox(5); @@ -140,11 +163,12 @@ final class Player extends VBox { extraControls.getChildren().setAll(clearPlaylistBtn, shuffleBtn, new Spacer(), volumeBtn); extraControls.setMaxWidth(PANEL_MAX_WIDTH); - // == Root == + // ~ - setSpacing(5); getStyleClass().add("player"); setAlignment(CENTER); + setSpacing(5); + setMinWidth(300); getChildren().setAll( new Spacer(VERTICAL), new StackPane(coverImage), @@ -161,13 +185,15 @@ final class Player extends VBox { extraControls, new Spacer(VERTICAL) ); + } - // == Play == - - backgroundProperty().bind(Bindings.createObjectBinding(() -> { - Color color = model.backgroundColorProperty().get(); - return new Background(new BackgroundFill(color, CornerRadii.EMPTY, Insets.EMPTY)); - }, model.backgroundColorProperty())); + private void init() { + heightProperty().addListener((obs, old, val) -> { + if (val == null) { return; } + int size = val.intValue() < 600 ? 150 : 250; + coverImage.setWidth(size); + coverImage.setHeight(size); + }); playBtn.setOnAction(e -> { MediaPlayer player = currentPlayer.get(); @@ -179,7 +205,7 @@ final class Player extends VBox { } }); - InvalidationListener timeChangeListener = obs -> { + InvalidationListener mediaTimeChangeListener = obs -> { if (currentPlayer.get() == null) { return; } var duration = currentPlayer.get().getCurrentTime(); @@ -189,15 +215,14 @@ final class Player extends VBox { currentTimeLabel.setText(seconds > 0 ? formatDuration(duration) : "0.0"); }; - InvalidationListener sliderChangeListener = obs -> { + timeSlider.valueProperty().addListener(obs -> { if (currentPlayer.get() == null) { return; } long max = (long) currentPlayer.get().getMedia().getDuration().toSeconds(); long sliderVal = (long) timeSlider.getValue(); if (sliderVal <= max && timeSlider.isValueChanging()) { currentPlayer.get().seek(Duration.seconds(sliderVal)); } - }; - timeSlider.valueProperty().addListener(sliderChangeListener); + }); model.currentTrackProperty().addListener((obs, old, val) -> { if (val == null) { @@ -215,7 +240,7 @@ final class Player extends VBox { mediaPlayer.setOnReady(() -> { Image image = getTag(media, "image", Image.class, NO_IMAGE); coverImage.setFill(new ImagePattern(image)); - model.setBackgroundColor(image != NO_IMAGE ? getDominantColor(image, BACKGROUND_OPACITY) : null); + model.setBackgroundColor(image != NO_IMAGE ? getDominantColor(image, 1.0) : null); trackTitle.setText(getTag(media, "title", String.class, NO_TITLE)); trackArtist.setText(getTag(media, "artist", String.class, NO_ARTIST)); @@ -234,7 +259,7 @@ final class Player extends VBox { }, mediaPlayer.statusProperty())); mediaPlayer.volumeProperty().bind(volumeSlider.valueProperty()); - mediaPlayer.currentTimeProperty().addListener(timeChangeListener); + mediaPlayer.currentTimeProperty().addListener(mediaTimeChangeListener); }); mediaPlayer.setOnEndOfMedia(model::playNext); @@ -247,7 +272,7 @@ final class Player extends VBox { if (old != null) { old.stop(); old.volumeProperty().unbind(); - old.currentTimeProperty().removeListener(timeChangeListener); + old.currentTimeProperty().removeListener(mediaTimeChangeListener); playIcon.iconCodeProperty().unbind(); old.dispose(); } diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerScreen.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerScreen.java new file mode 100644 index 0000000..9dc47d4 --- /dev/null +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlayerScreen.java @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: MIT */ +package atlantafx.sampler.page.showcase.musicplayer; + +import javafx.scene.control.SplitPane; +import javafx.scene.paint.Color; + +import java.util.Objects; + +import static atlantafx.sampler.util.JColorUtils.toHexWithAlpha; + +final class PlayerScreen extends SplitPane { + + private final Model model; + + public PlayerScreen(Model model) { + super(); + + this.model = model; + + createView(); + } + + private void createView() { + var player = new PlayerPane(model); + var playlist = new PlaylistPane(model); + + getStyleClass().add("player-screen"); + getItems().setAll(player, playlist); + + model.backgroundColorProperty().addListener((obs, old, val) -> { + var domColor = Objects.equals(Color.TRANSPARENT, val) ? + Color.TRANSPARENT : + Color.color(val.getRed(), val.getGreen(), val.getBlue(), 1); + var domColor20 = Objects.equals(Color.TRANSPARENT, val) ? + Color.TRANSPARENT : + Color.color(val.getRed(), val.getGreen(), val.getBlue(), 0.2); + var domColor50 = Objects.equals(Color.TRANSPARENT, val) ? + Color.TRANSPARENT : + Color.color(val.getRed(), val.getGreen(), val.getBlue(), 0.5); + var domColor70 = Objects.equals(Color.TRANSPARENT, val) ? + Color.TRANSPARENT : + Color.color(val.getRed(), val.getGreen(), val.getBlue(), 0.7); + setStyle("-color-dominant:" + toHexWithAlpha(domColor) + ";" + + "-color-dominant-20:" + toHexWithAlpha(domColor20) + ";" + + "-color-dominant-50:" + toHexWithAlpha(domColor50) + ";" + + "-color-dominant-70:" + toHexWithAlpha(domColor70) + ";" + + "-color-dominant-border:" + toHexWithAlpha(domColor70) + ";" + ); + }); + } +} diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Playlist.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlaylistPane.java similarity index 73% rename from sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Playlist.java rename to sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlaylistPane.java index e51df4d..967b3c4 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Playlist.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/PlaylistPane.java @@ -5,9 +5,11 @@ import atlantafx.base.controls.Spacer; import javafx.application.Platform; import javafx.collections.ListChangeListener; import javafx.concurrent.Task; +import javafx.css.PseudoClass; import javafx.geometry.Insets; import javafx.scene.control.*; -import javafx.scene.layout.*; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; import javafx.scene.paint.ImagePattern; import javafx.scene.shape.Rectangle; import javafx.stage.FileChooser; @@ -18,7 +20,8 @@ import java.util.List; import java.util.Objects; import static atlantafx.base.theme.Styles.*; -import static atlantafx.sampler.page.showcase.musicplayer.Utils.toWebColor; +import static atlantafx.sampler.page.showcase.musicplayer.MediaFile.Metadata.NO_IMAGE_ALT; +import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.SUPPORTED_MEDIA_TYPES; import static java.lang.Double.MAX_VALUE; import static javafx.geometry.Pos.CENTER_LEFT; import static javafx.scene.layout.Priority.ALWAYS; @@ -26,31 +29,50 @@ import static javafx.stage.FileChooser.ExtensionFilter; import static org.kordamp.ikonli.material2.Material2AL.ADD; import static org.kordamp.ikonli.material2.Material2MZ.PLAYLIST_PLAY; -final class Playlist extends VBox { +final class PlaylistPane extends VBox { - public Playlist(Model model) { + private final Model model; + + private Label sizeLabel; + private Label sizeDescLabel; + private ProgressBar loadProgress; + private Button addButton; + private ListView playlist; + + public PlaylistPane(Model model) { + super(); + + this.model = model; + + createView(); + init(); + } + + private void createView() { var headerLabel = new Label("Playlist"); headerLabel.getStyleClass().setAll(TEXT_CAPTION); // There's probably some #javafx-bug here. This label uses CSS class that - // changes font size & weight. When switching between themes it _sometimes_ - // ignores new color variables and remains using old fg color. Like it + // changes font size and weight. When switching between themes it _sometimes_ + // ignores new color variables and continues using old fg color. Like it // caches old font or something. The below rule forces it to use proper color. headerLabel.setStyle("-fx-text-fill: -color-fg-default;"); - var sizeLabel = new Label(""); + sizeLabel = new Label(""); sizeLabel.getStyleClass().add(TEXT_SMALL); - var sizeDescLabel = new Label("empty"); + sizeDescLabel = new Label("empty"); sizeDescLabel.getStyleClass().add(TEXT_SMALL); - var loadProgress = new ProgressBar(1); + loadProgress = new ProgressBar(1); loadProgress.getStyleClass().add(SMALL); loadProgress.setMaxWidth(MAX_VALUE); loadProgress.setVisible(false); - var addButton = new Button("Add", new FontIcon(ADD)); + addButton = new Button("Add", new FontIcon(ADD)); + addButton.getStyleClass().add(FLAT); var controlsBox = new HBox(); + controlsBox.setPadding(new Insets(0, 0, 10, 0)); controlsBox.getStyleClass().add("controls"); controlsBox.getChildren().setAll( new VBox(5, headerLabel, sizeDescLabel), @@ -59,16 +81,18 @@ final class Playlist extends VBox { ); controlsBox.setAlignment(CENTER_LEFT); - var playlist = new ListView<>(model.playlist()); + playlist = new ListView<>(model.playlist()); playlist.setCellFactory(param -> new MediaCell(model)); playlist.setPlaceholder(new Label("No Content")); + VBox.setVgrow(playlist, ALWAYS); getStyleClass().add("playlist"); - setSpacing(10); + setPadding(new Insets(10)); + setSpacing(5); getChildren().setAll(controlsBox, loadProgress, playlist); + } - // ~ - + private void init() { model.currentTrackProperty().addListener((obs, old, val) -> playlist.refresh()); model.playlist().addListener((ListChangeListener) c -> { @@ -82,15 +106,13 @@ final class Playlist extends VBox { } }); - model.backgroundColorProperty().addListener((obs, old, val) -> { - var color = model.backgroundColorProperty().get(); - playlist.setStyle("-color-cell-bg:" + toWebColor(color) + ";"); - setBackground(new Background(new BackgroundFill(color, CornerRadii.EMPTY, Insets.EMPTY))); - }); - addButton.setOnAction(e -> { - FileChooser fileChooser = new FileChooser(); - fileChooser.getExtensionFilters().addAll(new ExtensionFilter("MP3 files (*.mp3)", "*.mp3")); + var extensions = SUPPORTED_MEDIA_TYPES.stream().map(s -> "*." + s).toList(); + var fileChooser = new FileChooser(); + fileChooser.getExtensionFilters().addAll(new ExtensionFilter( + "MP3 files (" + String.join(", ", extensions) + ")", + extensions + )); List files = fileChooser.showOpenMultipleDialog(getScene().getWindow()); if (files == null || files.isEmpty()) { return; } @@ -120,6 +142,8 @@ final class Playlist extends VBox { private static class MediaCell extends ListCell { + private static final PseudoClass PLAYING = PseudoClass.getPseudoClass("playing"); + private final Model model; private final HBox root; private final Rectangle coverImage; @@ -166,10 +190,15 @@ final class Playlist extends VBox { } else { setGraphic(root); - playMark.setVisible(Objects.equals(mediaFile, model.currentTrackProperty().get())); + var playing = Objects.equals(mediaFile, model.currentTrackProperty().get()); + + pseudoClassStateChanged(PLAYING, playing); + playMark.setVisible(playing); mediaFile.readMetadata(metadata -> { - coverImage.setFill(new ImagePattern(metadata.image())); + coverImage.setFill(new ImagePattern( + metadata.image() != null ? metadata.image() : NO_IMAGE_ALT + )); titleLabel.setText(metadata.title()); artistLabel.setText(metadata.artist()); }); diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/StartScreen.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/StartScreen.java new file mode 100644 index 0000000..478d3ae --- /dev/null +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/StartScreen.java @@ -0,0 +1,105 @@ +/* SPDX-License-Identifier: MIT */ +package atlantafx.sampler.page.showcase.musicplayer; + +import atlantafx.base.theme.Styles; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.control.Button; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.VBox; +import javafx.scene.text.Text; +import javafx.scene.text.TextAlignment; +import javafx.scene.text.TextFlow; +import javafx.stage.DirectoryChooser; +import javafx.stage.FileChooser; +import javafx.stage.FileChooser.ExtensionFilter; +import org.kordamp.ikonli.feather.Feather; +import org.kordamp.ikonli.javafx.FontIcon; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.stream.Stream; + +import static atlantafx.sampler.page.showcase.musicplayer.MusicPlayerPage.SUPPORTED_MEDIA_TYPES; + +final class StartScreen extends BorderPane { + + private final Model model; + + public StartScreen(Model model) { + super(); + + this.model = model; + + createView(); + } + + private void createView() { + var jumboIcon = new FontIcon(Feather.MUSIC); + + var noteText = new TextFlow(new Text( + "Select a file or a folder." + )); + noteText.setMaxWidth(400); + noteText.setTextAlignment(TextAlignment.CENTER); + + var addFolderBtn = new Button("Add Folder"); + addFolderBtn.getStyleClass().add(Styles.ACCENT); + addFolderBtn.setPrefWidth(150); + addFolderBtn.setOnAction(e -> addFolder()); + + var addFileBtn = new Button("Add File"); + addFileBtn.setPrefWidth(150); + addFileBtn.setOnAction(e -> addFile()); + + var controls = new VBox(10, addFolderBtn, addFileBtn); + controls.setAlignment(Pos.CENTER); + controls.setFillWidth(true); + + var content = new VBox(30, jumboIcon, noteText, controls); + content.getStyleClass().add("content"); + content.setAlignment(Pos.CENTER); + content.setFillWidth(true); + + setCenter(content); + setPadding(new Insets(100)); + getStyleClass().add("start-screen"); + } + + private void addFile() { + var extensions = SUPPORTED_MEDIA_TYPES.stream().map(s -> "*." + s).toList(); + var fileChooser = new FileChooser(); + fileChooser.getExtensionFilters().addAll(new ExtensionFilter( + "MP3 files (" + String.join(", ", extensions) + ")", + extensions + )); + List files = fileChooser.showOpenMultipleDialog(getScene().getWindow()); + if (files == null || files.isEmpty()) { return; } + + for (File file : files) { + model.addFile(new MediaFile(file)); + } + } + + private void addFolder() { + DirectoryChooser directoryChooser = new DirectoryChooser(); + File dir = directoryChooser.showDialog(getScene().getWindow()); + if (dir == null) { return; } + + var path = dir.toPath(); + if (!Files.isDirectory(path) || !Files.isReadable(path)) { return; } + + try (Stream stream = Files.list(path)) { + stream.forEach(p -> { + for (String s : SUPPORTED_MEDIA_TYPES) { + if (!p.toAbsolutePath().toString().endsWith(s)) { continue; } + model.addFile(new MediaFile(p.toFile())); + } + }); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Utils.java b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Utils.java index 844b379..e671fd9 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Utils.java +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/Utils.java @@ -37,12 +37,4 @@ final class Utils { String.format("%02d:%02d", (seconds % 3600) / 60, seconds % 60) : String.format("%d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, seconds % 60); } - - public static String toWebColor(Color color) { - int r = ((int) Math.round(color.getRed() * 255)) << 24; - int g = ((int) Math.round(color.getGreen() * 255)) << 16; - int b = ((int) Math.round(color.getBlue() * 255)) << 8; - int a = ((int) Math.round(color.getOpacity() * 255)); - return String.format("#%08X", (r + g + b + a)); - } } diff --git a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/music-player.css b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/music-player.css index faec3ac..1a21e6b 100644 --- a/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/music-player.css +++ b/sampler/src/main/java/atlantafx/sampler/page/showcase/musicplayer/music-player.css @@ -1,26 +1,52 @@ /** SPDX-License-Identifier: MIT */ -.music-player-showcase { +.music-player-showcase > .start-screen { + -fx-border-color: -color-border-muted; -fx-border-width: 1; - -fx-border-color: -color-border-default; +} +.music-player-showcase > .start-screen > .content > .ikonli-font-icon { + -fx-icon-color: -color-fg-muted; + -fx-fill: -color-fg-muted; + -fx-icon-size: 64px; } -.music-player-showcase .playlist { - -fx-padding: 10; +.music-player-showcase > .player-screen { + -fx-border-color: -color-border-muted; + -fx-border-width: 1; + -color-dominant: transparent; + -color-dominant-20: transparent; + -color-dominant-50: transparent; + -color-dominant-70: transparent; + -color-dominant-border: -color-border-muted; +} +.music-player-showcase > .player-screen > * > .player { + -fx-background-color: radial-gradient(radius 100%, -color-dominant-50, -color-dominant-20); +} +.music-player-showcase > .player-screen > * > .player > .media-controls > .play > .ikonli-font-icon { + -fx-icon-size: 32px; +} +.music-player-showcase > .player-screen > .split-pane-divider { + -fx-background-color: -color-dominant-border; } -.music-player-showcase .playlist > .list-view { +.music-player-showcase > .player-screen > * > .playlist { + -fx-background-color: radial-gradient(radius 100%, -color-dominant-20, -color-dominant-50); +} +.music-player-showcase > .player-screen > * > .playlist > .controls { + -fx-border-color: -color-dominant-border; + -fx-border-width: 0 0 0.75px 0; +} +.music-player-showcase > .player-screen > * > .playlist > .controls > .button { + -color-button-bg-hover: transparent; + -color-button-bg-focused: transparent; + -color-button-bg-pressed: transparent; +} +.music-player-showcase > .player-screen > * > .playlist > .list-view { -fx-border-width: 0; } -.music-player-showcase .playlist > .list-view .list-cell { +.music-player-showcase > .player-screen > * > .playlist > .list-view .list-cell { + -color-cell-bg: transparent; + -color-cell-bg-selected: transparent; + -color-cell-border: transparent; -fx-cell-size: 4em; - -fx-background-color: transparent; - -fx-background-radius: 6px; -} -.music-player-showcase .playlist > .list-view:focused>.virtual-flow>.clipped-container>.sheet>.list-cell:filled:selected { - -fx-background-color: transparent; -} -.music-player-showcase .playlist > .list-view:focused>.virtual-flow>.clipped-container>.sheet>.list-cell:selected:hover, -.music-player-showcase .playlist > .list-view:focused>.virtual-flow>.clipped-container>.sheet>.list-cell:filled:hover { - -fx-background-color: derive(-color-cell-bg, -5%); -} +} \ No newline at end of file diff --git a/sampler/src/main/java/atlantafx/sampler/util/JColorUtils.java b/sampler/src/main/java/atlantafx/sampler/util/JColorUtils.java index a330880..9dac1d7 100644 --- a/sampler/src/main/java/atlantafx/sampler/util/JColorUtils.java +++ b/sampler/src/main/java/atlantafx/sampler/util/JColorUtils.java @@ -846,4 +846,12 @@ public class JColorUtils { (float) color.getOpacity() ).getColorHexShorthandWithAlpha(); } + + public static String toHexOpaque(Color color) { + return JColor.color( + (float) color.getRed(), + (float) color.getGreen(), + (float) color.getBlue() + ).getColorHexShorthandWithAlpha(); + } } diff --git a/sampler/src/main/resources/assets/styles/scss/general/_root.scss b/sampler/src/main/resources/assets/styles/scss/general/_root.scss index 496f59c..e51cab5 100644 --- a/sampler/src/main/resources/assets/styles/scss/general/_root.scss +++ b/sampler/src/main/resources/assets/styles/scss/general/_root.scss @@ -32,6 +32,10 @@ -fx-spacing: 0; } + .about { + @include hide(); + } + .credits { @include hide(); } diff --git a/sampler/src/main/resources/images/vinyl.jpg b/sampler/src/main/resources/images/vinyl.jpg deleted file mode 100644 index 360e5e232dd4575838cd581276fba4cb306da71d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95946 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%0D`9%{v-2kz^aRZZG13o{=w=P^YuiOb2H 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