1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
| private JComponent getMusicList(String cheminDossierARanger){
File file = new File(cheminDossierARanger);
final File fileFinal = file;
//liste des fichiers contenus dans le dossier
final File [] mp3List = new File[file.listFiles().length + 1];
//liste des strings correspondants
String [] listeNomsMorceaux = new String[file.listFiles().length + 1];
//assignation du contenu du fichier à chacun des fichiers de la liste
for (int i = 0 ; i < file.listFiles().length ; i++)
{
mp3List[i+1] = file.listFiles()[i];
listeNomsMorceaux[i+1] = file.listFiles()[i].getName();
}
//si le dossier présentement lu est la racine du dossier à ranger ou un de ses sous-dossiers
if(cheminDossierARanger.contains(GestionnaireFichier.getConfig(2)))
{
mp3List[0] = new File(cheminDossierARanger, "*Dossier Parent*");
listeNomsMorceaux[0] = "*Dossier Parent*";
}
//si le dossier présentement lu n'est pas la racine du dossier à ranger ou un de ses sous-dossiers
else
{
mp3List[0] = new File(cheminDossierARanger, "*Retour au dossier à ranger*");
listeNomsMorceaux[0] = "*Retour au dossier à ranger*";
}
JList jListListeFichiers = new JList(listeNomsMorceaux);
jListListeFichiers.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e) {
//Si l'utilisateur a sélectionné un dossier
if(mp3List[e.getLastIndex()].isDirectory())
{
//fermer la fenêtre courante
win.dispose();
//Créer instance de morceau
File fichier = mp3List[e.getLastIndex()];
final Morceau morceau = new Morceau(fichier);
//Proposer à l'utilisateur les choix décrits ci-après
Object[] options = {"1", "2", "3"};
int n = JOptionPane.showOptionDialog(win, "Que souhaitez-vous faire avec ce dossier?\n\nPour revenir au dossier parent faites echap ou fermez cette fenêtre\n\n1) Explorer le dossier normalement\n2) Ranger le contenu de ce dossier dans un dossier de votre choix puis revoir tous les mp3 de ce dossier un à un\n3) Déplacer ce dossier dans le répertoire de destination à sa racine puis revoir tous les mp3 de ce dossier un à un\n\n",
"Option du dossier", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null, options,options[0]);
switch (n)
{
//explorer le dossier normalement
case 0 :
new GUI(mp3List[e.getLastIndex()].getAbsolutePath());
break;
//ranger le dossier dans un dossier choisi puis explorer normalement
case 1 :
JFileChooser fileChooser = new JFileChooser(GestionnaireFichier.getConfig(4));
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY );
int returnVal = fileChooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
morceau.ranger(fileChooser.getSelectedFile().getAbsolutePath());
new GUI(morceau.getNouveauchemin());
}
break;
//ranger le dossier à la racine de Ma Musique et explorer normalement
case 2 :
morceau.ranger(GestionnaireFichier.getConfig(4));
morceau.playlister();
break;
default :
//retourner au menu de base
new GUI(fileFinal.getAbsolutePath());
break;
}
}
//si l'utilisateur décide de retourner au dossier parent
else if (mp3List[e.getLastIndex()].getName().compareTo("*Dossier Parent*") == 0)
{
win.dispose();
new GUI(fileFinal.getParent());
}
//si l'utilisateur décide de revenir au dossier originel à ranger
else if (mp3List[e.getLastIndex()].getName().compareTo("*Retour au dossier à ranger*") == 0)
{
win.dispose();
new GUI(GestionnaireFichier.getConfig(2));
}
//si l'utilisateur n'a pas séléctionné un dossier
else
{
if(!e.getValueIsAdjusting()){
File fichier = mp3List[e.getLastIndex()];
final Morceau morceau = new Morceau(fichier);
new Thread(){
public void run(){
morceau.jouer();
}
}.start();
Object[] options = {"Ranger dans le dossier...", "Ranger dans le dossier : " + morceau.chopperNomDossier() + " " + GestionnaireFichier.existenceDossier(GestionnaireFichier.getConfig(4) + "\\" + morceau.chopperNomDossier()), "Créer un dossier...", "Ne pas déplacer"};
int n = JOptionPane.showOptionDialog(win,"Sélectionnez une option",
"Option", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null, options,options[0]);
switch (n)
{
case 0 :
JFileChooser fileChooser = new JFileChooser(GestionnaireFichier.getConfig(4));
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY );
int returnVal = fileChooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
morceau.ranger(fileChooser.getSelectedFile().getAbsolutePath());
}
break;
case 1 :
morceau.ranger(GestionnaireFichier.getConfig(4) + "\\" + morceau.chopperNomDossier());
break;
case 2 :
String nouveauDossier = (String)JOptionPane.showInputDialog(
win,
"Choisissez un nom de dossier...",
"Créer un dossier",
JOptionPane.QUESTION_MESSAGE,
null, // c'est ouvert !!!
null, "");
if ((nouveauDossier != null) && (nouveauDossier.length() > 0))
{
morceau.ranger(GestionnaireFichier.getConfig(4) + "\\" + nouveauDossier);
}
break;
default :
break;
}
//prélever la liste des playlists dans le dossier indiqué par le fichier de conf
File[] listePlaylists = new File(GestionnaireFichier.getConfig(6)).listFiles();
String[] listeCheminPlaylists = new String[listePlaylists.length];
String[] listeCheminPlaylistsTronque = new String[listePlaylists.length];
//en extraire uniquement le nom des playlists, sans les .m3u
for (int i = 0; i < listePlaylists.length; i++)
{
listeCheminPlaylists[i] = listePlaylists[i].getAbsolutePath();
listeCheminPlaylistsTronque[i] = listePlaylists[i].getAbsolutePath();
listeCheminPlaylistsTronque[i] = (listeCheminPlaylistsTronque[i].split("\\\\"))[listeCheminPlaylistsTronque[i].split("\\\\").length-1];
listeCheminPlaylistsTronque[i] = (listeCheminPlaylistsTronque[i].split("\\."))[0];
}
while(n >= 0)
{
Object[] optionsPlaylists = listeCheminPlaylistsTronque;
n = JOptionPane.showOptionDialog(win,"Sélectionnez la playlist dans laquelle vous souhaitez ranger le morceau... Si vous avez fini, faites echap ou la croix en haut à droite",
"Option", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE, null, optionsPlaylists,optionsPlaylists[0]);
switch (n)
{
default :
if(n >= 0)morceau.ajouterPlaylist(listeCheminPlaylists[n]);
break;
}
}
} |
Partager