Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sample;
- import javafx.beans.InvalidationListener;
- import javafx.beans.Observable;
- import javafx.beans.value.ObservableValue;
- import javafx.collections.ListChangeListener;
- import javafx.event.ActionEvent;
- import javafx.fxml.FXML;
- import javafx.fxml.FXMLLoader;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.scene.control.*;
- import javafx.scene.control.cell.CheckBoxListCell;
- import javafx.scene.image.ImageView;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.scene.media.Media;
- import javafx.scene.media.MediaPlayer;
- import java.io.File;
- import java.io.IOException;
- import java.nio.file.FileAlreadyExistsException;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.stream.Collectors;
- import javafx.scene.control.ListView;
- import javafx.scene.control.Button;
- import javafx.stage.FileChooser;
- import javafx.stage.Stage;
- import javafx.scene.control.Label;
- import javafx.util.Callback;
- import org.controlsfx.control.CheckListView;
- public class BeatCloudMainWindowController {
- @FXML
- private Label nameOfSongBeingPlayed, addNewPlaylist;
- @FXML
- private ImageView buttonPause;
- @FXML
- private Button searchFieldButton, buttonSignOut, buttonCreatePlaylist;
- @FXML
- private TextField searchField, playlistTextField;
- @FXML
- private ImageView buttonSkipNext, btn_pause;
- @FXML
- private ImageView buttonSkipPrev;
- @FXML
- private ImageView buttonPlay;
- @FXML
- private Slider timeSlider, volumeSlider;
- @FXML
- private ListView<String> listOfSongs = new ListView<String>();
- @FXML
- private Button buttonFileChooser;
- @FXML
- private CheckListView<String> checkListView;
- @FXML
- private ListView<String> listOfPlaylists = new ListView<String>();
- @FXML
- private Button buttonEditPlaylist, buttonSavePlaylistEdits, buttonDeletePlaylist;
- private int index = 0;
- private int maxSong;
- private String[] songs;
- private Media[] me;
- private MediaPlayer[] mp;
- private int pageIndex = 0;
- private int noOfPlaylists;
- private boolean checkState = false;
- private ObservableList<String> data;
- private int[] playlistIDList;
- private String playlistID;
- private void getMax() {
- DB.selectSQL("select max(fldSongID) from tblSong");
- String getMaxSong = DB.getData();
- maxSong = Integer.parseInt(getMaxSong);
- DB.getData();
- }
- private void getAllPlaylist()
- {
- DB.selectSQL("select COUNT(fldPlaylistName) from tblPlaylist");
- noOfPlaylists = Integer.parseInt(DB.getData());
- DB.getData();
- }
- private void getplaylistID()
- {
- getAllPlaylist();
- playlistIDList = new int [noOfPlaylists];
- int i = 0;
- DB.selectSQL("select fldPlaylistID from tblPlaylist");
- do {
- playlistID = DB.getData();
- System.out.println(playlistID);
- if (playlistID.equals(DB.NOMOREDATA)) {
- break;
- } else {
- playlistIDList[i] = Integer.parseInt(playlistID);
- i++;
- }
- } while (true);
- System.out.println("kik:"+ Arrays.toString(playlistIDList));
- }
- private void loadPlaylists()
- {
- getAllPlaylist();
- System.out.println( "nopd"+noOfPlaylists);
- String[] playlists = new String[noOfPlaylists];
- int i = 0;
- DB.selectSQL("select fldPlaylistName from tblPlaylist");
- do {
- String playlistname = DB.getData();
- System.out.println(playlistname);
- if (playlistname.equals(DB.NOMOREDATA)) {
- break;
- } else {
- playlists[i] = playlistname;
- i++;
- }
- } while (true);
- System.out.println("kik:"+ Arrays.toString(playlistIDList));
- ObservableList<String> data = FXCollections.observableArrayList(playlists);
- listOfPlaylists.setItems(data);
- buttonEditPlaylist.setVisible(false);
- /**
- String[] playlists;
- playlists = new String[noOfPlaylists];
- for (int i = 5; i < noOfPlaylists+5; i++)
- {
- DB.selectSQL("Select fldPlaylistName FROM tblPlaylist where fldPlaylistID = '" + i + "'");
- playlists[i-5] = DB.getData();
- }
- DB.getData();
- data = FXCollections.observableArrayList(playlists);
- listOfPlaylists.setItems(data);
- */
- }
- private void loadsongs ()
- {
- getMax();
- songs = new String[maxSong];
- for (int i = 1; i < maxSong + 1; i++) {
- DB.selectSQL("Select fldSongName from tblSong where fldSongID = '" + i + "'");
- songs[i - 1] = DB.getData();
- DB.selectSQL("Select fldSongArtist from tblSong where fldSongID = '" + i + "'");
- songs[i - 1] += " - " + DB.getData();
- }
- data = FXCollections.observableArrayList(songs);
- listOfSongs.setItems(data);
- me = new Media[maxSong];
- DB.selectSQL("SELECT fldPath FROM tblSong");
- do {
- String fileName = DB.getData();
- if (fileName.equals(DB.NOMOREDATA)) {
- break;
- } else {
- String path = new File(fileName).getAbsolutePath();
- me[index] = new Media(new File(path).toURI().toString());
- index += 1;
- }
- } while (true);
- mp = new MediaPlayer[maxSong];
- index = 0;
- for (int i = 0; i < me.length; i++)
- {
- mp[i] = new MediaPlayer(me[i]);
- }
- }
- @FXML
- private void initialize() throws Exception { // can now add throws clause
- getplaylistID();
- loadsongs();
- loadPlaylists();
- checkState = false;
- // The minimum value.
- volumeSlider.setMin(0);
- // The maximum value.
- volumeSlider.setMax(100);
- // Current value
- volumeSlider.setValue(80);
- volumeSlider.setShowTickLabels(true);
- volumeSlider.setShowTickMarks(true);
- volumeSlider.setBlockIncrement(10);
- volumeSlider.setValue(mp[index].getVolume() * 100);
- volumeSlider.valueProperty().addListener(new InvalidationListener() {
- @Override
- public void invalidated(Observable observable) {
- mp[index].setVolume(volumeSlider.getValue() / 100);
- }
- });
- }
- private int getFileName(String selected) {
- System.out.println(selected);
- for (int i = 0; i < maxSong; i++)
- {
- if (songs[i].equals(selected))
- {
- index = i;
- break;
- }
- }
- return index;
- }
- @FXML
- private void handleChoice() {
- getFileName(listOfSongs.getSelectionModel().getSelectedItem());
- }
- @FXML
- private void handlePlaylistChoice()
- {
- buttonEditPlaylist.setVisible(true);
- checkState = true;
- DB.selectSQL("SELECT fldPlaylistID FROM tblPlaylist WHERE fldPlayListName = '"+listOfPlaylists.getSelectionModel().getSelectedItem()+"'");
- playlistID = DB.getData();
- System.out.println("PlaylistID!" + playlistID);
- DB.selectSQL("SELECT COUNT(fldSongID) FROM tblConnect WHERE fldPlaylistID = '"+playlistID+"'");
- int noOfSongsInPlaylist = Integer.parseInt(DB.getData());
- String[] playlistSongsID = new String[noOfSongsInPlaylist];
- String[] playlistSongs = new String[noOfSongsInPlaylist];
- DB.selectSQL("SELECT fldSongID FROM tblConnect WHERE fldPlaylistID = '"+playlistID+"'");
- for (int i = 0; i < noOfSongsInPlaylist; i++)
- {
- playlistSongsID[i] = DB.getData();
- }
- for (int i = 0; i < noOfSongsInPlaylist; i++)
- {
- DB.selectSQL("SELECT fldSongName FROM tblSong WHERE fldSongID = '"+playlistSongsID[i]+"'");
- playlistSongs[i] = DB.getData();
- DB.selectSQL("SELECT fldSongArtist FROM tblSong WHERE fldSongID = '"+playlistSongsID[i]+"'");
- playlistSongs[i] += " - " + DB.getData();
- }
- DB.getData();
- data = FXCollections.observableArrayList(playlistSongs);
- listOfSongs.setItems(data);
- }
- private void getTimeSlider() {
- timeSlider.setMax(me[index].getDuration().toSeconds());
- System.out.println("Duration: " + me[index].getDuration().toSeconds());
- mp[index].currentTimeProperty().addListener((obs, oldTime, newTime) -> {
- if (!timeSlider.isValueChanging()) {
- timeSlider.setValue(newTime.toSeconds());
- }
- });
- }
- @FXML
- private void handlePlay() {
- // getTimeSlider();
- for (int i = 0; i < mp.length; i++)
- {
- mp[i].pause();
- }
- // Play the mediaPlayer with the attached music
- for (int i = 0; i < mp.length; i++) {
- mp[index].play();
- nameOfSongBeingPlayed.setText(songs[index]);
- buttonPlay.setVisible(false);
- btn_pause.setVisible(true);
- }
- }
- @FXML
- private void handleSkip() {
- int[] playing = new int[data.size()];
- for (int i = 0; i < playing.length; i++)
- {
- for (int k = 0; k < maxSong; k++) {
- if (songs[k].equals(data.get(i))) {
- playing[i] = k;
- break;
- }
- }
- }
- for (int i = 0; i < mp.length; i++)
- {
- mp[i].stop();
- }
- System.out.println("hvad er checkstate: "+checkState);
- if (checkState)
- {
- for (int i = 0; i < playing.length; i++)
- {
- if(playing[i] == index)
- {
- if (i == playing.length-1)
- {
- index = playing[0];
- mp[index].play();
- break;
- }
- else
- {
- index = playing[i+1];
- mp[index].play();
- break;
- }
- }
- }
- }
- else
- {
- if (index == mp.length-1)
- {
- index = 0;
- }
- else
- {
- index += 1;
- }
- mp[index].play();
- }
- nameOfSongBeingPlayed.setText(songs[index]);
- buttonPlay.setVisible(false);
- btn_pause.setVisible(true);
- getTimeSlider();
- }
- @FXML
- private void handlePrevious() {
- int[] playing = new int[data.size()];
- for (int i = 0; i < playing.length; i++)
- {
- for (int k = 0; k < maxSong; k++) {
- if (songs[k].equals(data.get(i))) {
- playing[i] = k;
- break;
- }
- }
- }
- for (int i = 0; i < mp.length; i++)
- {
- mp[i].stop();
- }
- if (checkState)
- {
- for (int i = 0; i < playing.length; i++)
- {
- if(playing[i] == index)
- {
- if (i == 0)
- {
- index = playing[playing.length-1];
- mp[index].play();
- break;
- }
- else
- {
- index = playing[i-1];
- mp[index].play();
- break;
- }
- }
- }
- }
- else
- {
- if (index == 0)
- {
- index = mp.length-1;
- }
- else
- {
- index -= 1;
- }
- mp[index].play();
- }
- nameOfSongBeingPlayed.setText(songs[index]);
- buttonPlay.setVisible(false);
- btn_pause.setVisible(true);
- nameOfSongBeingPlayed.setText(songs[index]);
- getTimeSlider();
- }
- @FXML
- private void handleStop() {
- for (int i = 0; i < mp.length; i++)
- {
- mp[i].stop();
- }
- buttonPlay.setVisible(true);
- btn_pause.setVisible(false);
- }
- @FXML
- private void handlePause() {
- for (int i = 0; i < mp.length; i++)
- {
- mp[i].pause();
- }
- buttonPlay.setVisible(true);
- btn_pause.setVisible(false);
- }
- @FXML
- private void handleSignOut() throws IOException {
- mp[index].stop();
- buttonSignOut.getScene().getWindow().hide();
- Stage login = new Stage();
- Parent root = FXMLLoader.load(getClass().getResource("login.fxml"));
- Scene scene = new Scene(root, 1000, 600);
- login.setScene(scene);
- login.show();
- }
- @FXML
- private void handleSearch()
- {
- showSearched(pageIndex);
- }
- private void showSearched(int type)
- {
- playlistTextField.setVisible(false);
- buttonCreatePlaylist.setVisible(false);
- String searchWord = searchField.getText();
- searchWord = searchWord.toLowerCase();
- ArrayList<String> search = new ArrayList<String>();
- for (int i = 0; i < maxSong; i++) {
- if (songs[i].toLowerCase().contains(searchWord)) {
- search.add(songs[i]);
- }
- }
- ObservableList<String> Searchdata = FXCollections.observableArrayList(search);
- if (type == 0)
- {
- listOfSongs.setVisible(true);
- listOfSongs.setItems(Searchdata);
- }
- else if (type == 1)
- {
- checkListView.setVisible(true);
- playlistTextField.setVisible(true);
- buttonCreatePlaylist.setVisible(true);
- checkListView.setItems(Searchdata);
- }
- }
- private List<String> playListList;
- @FXML
- private void handleAddPlaylist() {
- pageIndex = 1;
- listOfSongs.setVisible(false);
- checkListView.setVisible(true);
- playlistTextField.setVisible(true);
- buttonCreatePlaylist.setVisible(true);
- //buttonFileChooser.setVisible(true);
- ObservableList<String> data = FXCollections.observableArrayList(songs);
- checkListView.setItems(data);
- checkListView.getCheckModel().getCheckedItems().addListener(new ListChangeListener<String>() {
- public void onChanged(Change<? extends String> c)
- {
- ObservableList<String> playList = FXCollections.observableArrayList(checkListView.getCheckModel().getCheckedItems());
- playListList = playList.stream().collect(Collectors.toList());
- }
- });
- //1) User clicks "Create playlist". - DONE
- //2) User can enter a name - DONE
- //3) User can check which songs to add to playlist - Done
- //TODO 4) User can "Save playlist" which saves it to the DB
- //TODO 7) The "Choose music file" is shown when "all songs" button is pressed, but it should disappear
- }
- @FXML
- private void handleAddMusic() {
- FileChooser chooseSongs = new FileChooser();
- chooseSongs.getExtensionFilters().add(new FileChooser.ExtensionFilter("Audio files (*.mp3), (*.m4a) or (.wav)", "*.mp3","*.wav","*.m4a"));
- List<File> f = chooseSongs.showOpenMultipleDialog(null);
- for (File file : f) {
- System.out.println(file.getAbsolutePath());
- Path sourcePath = Paths.get(file.getAbsolutePath());
- Path songName = Paths.get(file.getName());
- System.out.println("Song title: "+songName);
- Path destinationPath = Paths.get("C:\\Users\\konta\\IdeaProjects\\JavafxMusicPlayer\\src\\sample\\music\\"+file.getName());
- System.out.println("Path "+destinationPath);
- //try {
- DB.insertSQL("INSERT INTO tblSong (fldSongName, fldPath) VALUES ('"+songName+"','"+sourcePath+"')");
- //Files.copy(sourcePath, destinationPath);
- /**} catch(FileAlreadyExistsException e) {
- System.out.println("destination file already exists");
- } catch (IOException e) {
- System.out.println("something else went wrong");
- e.printStackTrace();
- }*/
- }
- }
- @FXML
- private void handleAllSongs() {
- checkState = false;
- pageIndex = 0;
- loadsongs();
- playlistTextField.setVisible(false);
- checkListView.setVisible(false);
- buttonCreatePlaylist.setVisible(false);
- listOfSongs.setVisible(true);
- buttonFileChooser.setVisible(false);
- }
- @FXML
- private void handleCreatePlaylist() throws IOException {
- String playlistName = playlistTextField.getText();
- System.out.println(playlistName);
- LogInController user = new LogInController();
- System.out.println(user.getUsername());
- DB.insertSQL("INSERT INTO tblPlaylist (fldPlaylistName, fld_Username) VALUES ('"+playlistName+"','"+user.getUsername()+"')");
- DB.selectSQL("SELECT fldPlaylistID FROM tblPlaylist WHERE fldPlaylistName = '"+playlistName+"'");
- String playlistIDInCreate = DB.getData();
- String StopGetData = DB.getData();
- //DB.getData();
- for (String playlist: playListList)
- {
- for (int i = 0; i < songs.length; i++)
- {
- if (songs[i].equals(playlist))
- {
- DB.insertSQL("INSERT INTO tblConnect (fldPlaylistID, fldSongID) VALUES ('"+playlistIDInCreate+"','"+(i+1)+"')");
- }
- }
- }
- //These are the last ones to run.
- //playlistTextField.setVisible(false);
- //buttonCreatePlaylist.setVisible(false);
- getplaylistID();
- loadsongs();
- loadPlaylists();
- listOfSongs.setVisible(true);
- checkListView.setVisible(false);
- playlistTextField.setVisible(false);
- buttonCreatePlaylist.setVisible(false);
- }
- @FXML
- private void handleEditPlaylist ()
- {
- pageIndex = 1;
- listOfSongs.setVisible(false);
- checkListView.setVisible(true);
- playlistTextField.setVisible(true);
- buttonSavePlaylistEdits.setVisible(true);
- buttonDeletePlaylist.setVisible(true);
- ObservableList<String> data = FXCollections.observableArrayList(songs);
- checkListView.setItems(data);
- DB.selectSQL("select fldPlaylistName from tblPlaylist where fldPlaylistID = '"+playlistID +"'");
- String name = DB.getData();
- String StopGetData = DB.getData();
- playlistTextField.setText(name);
- }
- @FXML
- private void handleSavePlaylist() throws IOException
- {
- System.out.println("playlistID:"+playlistID);
- DB.deleteSQL("Delete from tblConnect where fldPlaylistID = '"+playlistID+"'");
- String playlistName = playlistTextField.getText();
- System.out.println(playlistName);
- DB.updateSQL("UPDATE tblPlaylist SET fldPlaylistName= '"+ playlistName+"' WHERE fldPlaylistID = "+playlistID);
- getplaylistID();
- loadsongs();
- loadPlaylists();
- }
- @FXML
- private void handleDeletePlaylist()
- {
- }
- }
- //TODO add a "add music" button so that the user can add music
- //TODO remove or out comment all internal sout's
- //TODO Add JavaDoc documentation
- //TODO Add comments
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement