HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavaMinor

Media player at your service

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
playerserviceyourmedia

Problem

I have a very basic version of a media player built using JavaFX. The project is well segregated and has a different packages for controllers, utils and supporter classes.

My project follows the MVC pattern and it contains the following important parts:

  • All the views are in FXML files.



  • These views have dedicated controllers for them, all inside the com.ita.controller package.



  • Some custom controls / dialogs inside the com.ita.ui package.



  • Utility classes inside the com.ita.util.



  • The Main class extends Application and is the entry point. It is also responsible for invocation and loading the views into the stage.



Main.java

```
public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/ita/fxml/mediaplayer.fxml"));
BorderPane pane = loader.load();
Scene scene = new Scene(pane, 650, 400);
primaryStage.setScene(scene);
MediaPlayerController controller = ((MediaPlayerController) loader.getController());
// Load Playlist FXML and inject controller/root
FXMLLoader playListLoader = new FXMLLoader(getClass().getResource("/com/ita/fxml/playlist.fxml"));
playListLoader.load();
controller.injectPlayListController((PlaylistController) playListLoader.getController());
controller.injectPlayListRoot(playListLoader.getRoot());
bindSize(controller, scene);
controller.setStage(primaryStage);
primaryStage.show();
controller.applyDragAndDropFeatures(scene);
}

private void bindSize(MediaPlayerController controller, Scene scene){
controller.timerSliderWidthProperty().bind(scene.widthProperty().subtract(500));
controller.mediaViewWidthProperty().bind(scene.widthProperty());
controller.mediaViewHeightProperty().bind(scene.heightProperty().subtract(70));
}

public static void main(String[] args) {

Solution

Depending on who you ask, this piece of code could be changed slightly to reduce nesting

@FXML
void delete(ActionEvent event) {
    if (playList.getSelectionModel().getSelectedItem() != null) {
        if(null!=playListFiles || !playListFiles.isEmpty()) {
            deletedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
            playListFiles.remove(playList.getSelectionModel().getSelectedItem());
            playList.setItems(playListFiles);
        }
    }
}


there really isn't a reason for putting in another if statement, just merge the condition statements into one condition

@FXML
void delete(ActionEvent event) {
    if ((playList.getSelectionModel().getSelectedItem() != null) &&
            (null!=playListFiles || !playListFiles.isEmpty()) {
        deletedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
        playListFiles.remove(playList.getSelectionModel().getSelectedItem());
        playList.setItems(playListFiles);
    }
}


Same here

@Override
public void initialize(URL location, ResourceBundle resources) {
    playList.setOnMouseClicked((click) -> {
        if (click.getClickCount() == 2) {
            if (playList.getSelectionModel().getSelectedItem() != null) {
                selectedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
            }
        }
    });
}


I just put the conditionals together, does the exact same thing as your code, but slightly clearer

@Override
public void initialize(URL location, ResourceBundle resources) {
    playList.setOnMouseClicked((click) -> {
        if ((click.getClickCount() == 2) && (playList.getSelectionModel().getSelectedItem() != null)) {
                selectedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
        }
    }
});

Code Snippets

@FXML
void delete(ActionEvent event) {
    if (playList.getSelectionModel().getSelectedItem() != null) {
        if(null!=playListFiles || !playListFiles.isEmpty()) {
            deletedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
            playListFiles.remove(playList.getSelectionModel().getSelectedItem());
            playList.setItems(playListFiles);
        }
    }
}
@FXML
void delete(ActionEvent event) {
    if ((playList.getSelectionModel().getSelectedItem() != null) &&
            (null!=playListFiles || !playListFiles.isEmpty()) {
        deletedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
        playListFiles.remove(playList.getSelectionModel().getSelectedItem());
        playList.setItems(playListFiles);
    }
}
@Override
public void initialize(URL location, ResourceBundle resources) {
    playList.setOnMouseClicked((click) -> {
        if (click.getClickCount() == 2) {
            if (playList.getSelectionModel().getSelectedItem() != null) {
                selectedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
            }
        }
    });
}
@Override
public void initialize(URL location, ResourceBundle resources) {
    playList.setOnMouseClicked((click) -> {
        if ((click.getClickCount() == 2) && (playList.getSelectionModel().getSelectedItem() != null)) {
                selectedMedia.setValue((Path) playList.getSelectionModel().getSelectedItem());
        }
    }
});

Context

StackExchange Code Review Q#97807, answer score: 4

Revisions (0)

No revisions yet.